![](/img/trans.png)
[英]MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost'
[英]Enable remote MySQL connection: ERROR 1045 (28000): Access denied for user
MySQL 5.1.31 在 Windows XP 上运行。
从本地MySQL 服务器 (192.168.233.142) 我可以以 root 身份连接,如下所示:
>mysql --host=192.168.233.142 --user=root --password=redacted
从远程机器(192.168.233.163),我可以看到mysql端口是开放的:
# telnet 192.168.233.142 3306
Trying 192.168.233.142...
Connected to 192.168.233.142 (192.168.233.142).
但是当尝试从远程机器连接到 mysql 时,我收到:
# mysql --host=192.168.233.142 --user=root --password=redacted
ERROR 1045 (28000): Access denied for user 'root'@'192.168.233.163' (using password: YES)
我在 mysql.user 中只有 2 个条目:
Host User Password
--------------------------------------
localhost root *blahblahblah
% root [same as above]
我还需要做什么才能启用远程访问?
编辑
正如下面 Paulo 所建议的,我尝试将 % 的 mysql.user 条目替换为 IP 特定条目,因此我的用户表现在如下所示:
Host User Password
------------------------------------------
localhost root *blahblahblah
192.168.233.163 root [same as above]
然后我重新启动了机器,但问题仍然存在。
你必须把它作为根:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'IP' IDENTIFIED BY 'PASSWORD' with grant option;
;
其中 IP 是您要允许访问的 IP,USERNAME 是您用来连接的用户,PASSWORD 是相关密码。
如果您想允许从任何 IP 访问,只需输入%
而不是您的 IP
然后你只需要放
FLUSH PRIVILEGES;
或者重启mysql服务器,就是这样。
在授予远程访问权限后,我遇到了同样的错误,直到我这样做:
从/etc/mysql/my.cnf
在较新版本的 mysql 中,文件的位置是/etc/mysql/mysql.conf.d/mysqld.cnf
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
(注释此行: bind-address = 127.0.0.1
)
然后运行service mysql restart
。
默认情况下,MySQL 服务器远程访问是禁用的。 为用户提供远程访问的过程是。
PATH
mysql -uroot -proot
(或任何 root 密码)登录到 root。mysql>
GRANT ALL PRIVILEGES ON *.* TO 'username'@'IP' IDENTIFIED BY 'password';
这里的 IP 是您希望允许远程访问的 IP 地址,如果我们输入%
任何 IP 地址都可以远程访问。
例子:
C:\Users\UserName> cd C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin
C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>mysql -uroot -proot
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.27 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.25 sec)
这对于其他用户。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'testUser'@'%' IDENTIFIED BY 'testUser';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
希望这会有所帮助
Paulo 的帮助使我找到了解决方案。 它是以下内容的组合:
bash shell 将美元符号视为扩展为环境变量的特殊字符,因此我们需要使用反斜杠对其进行转义。 顺便说一句,在美元符号是密码的最后一个字符的情况下,我们不必这样做。
例如,如果您的密码是“pas$word”,则从 Linux bash 我们必须按如下方式连接:
# mysql --host=192.168.233.142 --user=root --password=pas\$word
你有防火墙吗? 确保端口 3306 已打开。
在 Windows 上,默认情况下会创建 mysql root 帐户,该帐户仅允许从 localhost 进行访问,除非您在安装期间选择了启用从远程计算机访问的选项。
使用 '%' 作为主机名创建或更新所需的用户。
例子 :
CREATE USER 'krish'@'%' IDENTIFIED BY 'password';
再次尝试flush privileges
。
尝试重新启动服务器以重新加载授权。
尝试使用主机“192.168.233.163”创建一个用户。 “%”似乎不允许所有(这很奇怪)
就我而言,我试图连接到 cent OS 上的远程 mysql 服务器。 在经历了很多解决方案(授予所有权限、删除 ip 绑定、启用网络)之后,问题仍然没有得到解决。
事实证明,在研究各种解决方案时,我遇到了 iptables,这让我意识到 mysql 端口 3306 不接受连接。
这是关于我如何检查和解决此问题的小说明。
检查端口是否接受连接:
telnet (mysql 服务器 ip) [portNo]
添加 ip table 规则以允许端口上的连接:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
不建议将其用于生产环境,但如果您的 iptables 配置不正确,添加规则可能仍无法解决问题。 在这种情况下,应执行以下操作:
服务 iptables 停止
希望这可以帮助。
如果您使用的是动态 IP,只需授予对 192.168.2.% 的访问权限,因此现在您不必担心每次都授予对您的 IP 地址的访问权限。
我正在为我的 Amazon EC2 Linux 实例远程登录 MYSQL 而苦苦挣扎。 发现解决方案是确保我的安全组包含 MySQL 端口 3306 的入站规则以包含我的 IP 地址(或任何地方的 0.0.0.0/0)。 添加此规则后,立即可以远程连接。
MySQL ODBC 3.51 Driver 是不处理密码中的特殊字符。
“警告——如果您的 GRANT 命令中的密码包含特殊字符,例如 !@# $ % ^ ?,您可能会对 MySQL ODBC 3.51 感到头疼。MySQL ODBC 3.51 ODBC 驱动程序不支持密码框中的这些特殊字符。您将收到的唯一错误消息是“访问被拒绝”(使用密码:是)“-来自http://www.plaintutorials.com/install-and-create-mysql-odbc-connector-on-windows-7/
用户/主机组合可能是在没有密码的情况下创建的。
我假设在为现有用户(使用 GUI 应用程序)添加新主机时,现有密码也将用于新用户/主机组合。
我可以登录
mysql -u username -p PASSWORD
本地,但不是来自 IPADDRESS
mysql -u --host=HOST -p PASSWORD
(我实际上可以不使用密码从 IPADDRESS 登录)
mysql -u --host=HOST
设置密码允许访问:
set password for '<USER>'@'<IPADDRESS>' = '<PASSWORD>';
mysql 配置文件的新位置是
/etc/mysql/mysql.conf.d/mysqld.cnf
我的情况非常简单。
如果您输入了错误的密码,您可能会遇到此问题。 不需要创建用户(用户已经存在),没有其他权限。 基本上确保密码正确。 因此,请确保密码正确
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.