MySQL远程连接 – 拒绝访问用户名'@'localhost'(使用密码:YES)

我正在build立到MySQL服务器的远程连接,但无论我尝试从远程服务器访问被拒绝错误。

我通过添加用户:

CREATE USER 'username'@'REMOTE_IP_ADDRESS' IDENTIFIED BY '***'; 

然后我给了权限:

 GRANT ALL PRIVILEGES ON databasename.* to username@REMOTE_IP_ADDRESS; 

我在MySQL服务器上的用户表显示(除其他外):

 +---------------+--------------------+ | user | host | +---------------+--------------------+ | username | REMOTE_IP_ADDRESS | +---------------+--------------------+ 

如果我向用户显示赠款,我会得到:

 +------------------------------------------------------------------------------------+ | Grants for username@REMOTE_IP_ADDRESS +------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'username'@'REMOTE_IP_ADDRESS' IDENTIFIED BY PASSWORD '***' | GRANT ALL PRIVILEGES ON `databasename`.* TO 'username'@'REMOTE_IP_ADDRESS' +------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec) 

然后在远程服务器上使用:

 mysql -u username -p DB_SERVER_IP 

并得到错误信息:

 ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES) 

我已经做了“冲洗特权”,但我仍然无法连接 – 我注意到,错误是用户名@本地主机,我没有任何权限设置为用户名@本地主机,但我从来没有这样做过。 我有一些其他的远程帐户在同一台​​服务器上,他们都没有@本地主机,因为他们只在本地连接。

我错过了什么? 我忘了做什么,或者我可以检查什么?

该错误消息表明您根本不连接到远程MySQL,而是连接到本地主机。 确保使用选项-h连接到远程服务器。

mysql -u username -h DB_SERVER_IP

为了简单,让我们这样说:

计算机A =持有MySQL DB。 IPv4 = 192.168.11.1

计算机B =有一个Eclipse程序,想连接到计算机A,并为模式做东西。 Ipv4 = 192.168.22.2


在计算机上执行以下操作A:

它看起来像你试图通过'username'@192.168.22.2'的名字来创build一个新用户,但是一个不同的用户通过'username'@'localhost'这个名字正在阻止/优先。

做这个命令看用户:

 SELECT user,host FROM mysql.user; 

你应该看到两个条目:

1)user = username,host = localhost

2)用户=用户名,主机= 192.168.22.2

所以这些命令:

 DROP User 'username'@'localhost'; DROP User 'username'@'192.168.22.2'; 

请注意,如果您看到“用户名”@“%”的用户,也可以删除/删除该行。

重新启动MySQL工作台

然后再次执行您的原始命令:

 CREATE USER 'username'@'192.168.22.2' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON databasename.* TO 'username'@'192.168.22.2'; 

我不明白你为什么使用“***”作为你的密码,所以我用“密码”代替了它。


然后去计算机B并打开你的命令提示符/terminal。 键入以下内容,并将其连接到计算机A.如果无法连接,请检查计算机A的防火墙的入站规则,并检查计算机A上是否正在运行MySQL服务。

 mysql --host=192.168.11.1 --user=username --password=password 

(确保你有mysql设置作为一个环境variables,否则命令提示符将不理解“mysql”命令)

有用的故障排除方法:closures计算机A上的所有防火墙规则。从计算机B的命令提示符/terminal执行“ping 192.168.11.1”或“telnet 192.168.11.1 3306”。

您需要单独添加本地主机用户。 你可以用一个命令(而不是两个)来完成。

 GRANT ALL on database.* to 'user'@'localhost' identified by 'paswword'; 

如果你想添加用户,使其可以从任何地方连接(不太安全),使用这个:

 GRANT ALL on database.* to 'user'@'%' identified by 'password'; 

小费:

注释掉pid和套接字文件,如果你不能连接到服务器.. mysql可能与不正确的pid和/或套接字文件连接,所以当你尝试通过命令行连接到服务器时,它会“看起来”不正确的pid /套接字文件…

  ###注释掉pid和套接字文件,如果无法连接到服务器.. 
#PID文件=在/ var /运行/ MySQL的/ mysqld.pid #sockets=的/ var / lib中/ MySQL的/的mysql.sock