我安装了 XAMPP 5.5.24,并为我的应用程序创建了一个数据库,并创建了一个 MySQL 用户来连接它。但是,我面临以下问题:
在我明确授予访问权限之前,用户无法在表Host
中的列设置为的情况下本地连接 MySQL 。mysql.user
%
localhost
mysql> select user, host from mysql.user order by user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| | localhost |
| | linux |
| myNewUser | % |
| myNewUser | localhost |
| pma | localhost |
| root | localhost |
| root | linux |
+------------------+-----------+
7 rows in set (0,00 sec)
我以为列%
中Host
应该允许所有内容,包括localhost
。但是,如果没有该行| myNewUser | localhost |
,MySQL 会拒绝任何本地连接(已尝试-h localhost
,127.0.0.1
),直到指定 LAN IP 地址。
iMac:www Mirek$ /Applications/XAMPP/xamppfiles/bin/mysql -u myNewUser -p
Enter password:
ERROR 1045 (28000): Access denied for user 'myNewUser'@'localhost' (using password: YES)
iMac:www Mirek$ /Applications/XAMPP/xamppfiles/bin/mysql -u myNewUser -p -h localhost
Enter password:
ERROR 1045 (28000): Access denied for user 'myNewUser'@'localhost' (using password: YES)
iMac:www Mirek$ /Applications/XAMPP/xamppfiles/bin/mysql -u myNewUser -p -h 127.0.0.1
Enter password:
ERROR 1045 (28000): Access denied for user 'myNewUser'@'localhost' (using password: YES)
iMac:www Mirek$ /Applications/XAMPP/xamppfiles/bin/mysql -u myNewUser -p -h 10.0.1.2
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 133
Server version: 5.6.24 Source distribution
这是正常现象吗?还是我忽略了什么?
答案1
作为@wurtel提到过,到 的连接localhost
使用 UNIX 套接字文件绕过 TCP,因此不匹配任何 TCP 地址(%
)。
答案2
如果通过 TCP/IP 登录,则需要指定端口和协议
mysql -u myNewUser -p -h 10.0.1.2 -p3306 --protocol=tcp
然后它就可以工作了。
要验证,当您登录时,运行此
mysql> SELECT USER() AttemptedToLoginAs,CURRENT_USER() MySQLAllowedMeAs;
如果AttemptedToLoginAs
和MySQLAllowedMeAs
两者都说myNewUser@%
,那么您做对了。