【发布时间】:2017-05-07 14:29:26
【问题描述】:
无法在新安装的服务器版本 5.7.18-0ubuntu0.17.04.1 (Ubuntu) 上通过 TCP 连接到 localhost 上的 mysql
这行得通:
# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 5.7.18-0ubuntu0.17.04.1 (Ubuntu)
这不是:
# mysql -h 127.0.0.1
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
在客户端我看到mysql 被配置为监听 127.0.0.1:
mysql> show variables like '%bind%';
+---------------+-----------+
| Variable_name | Value |
+---------------+-----------+
| bind_address | 127.0.0.1 |
+---------------+-----------+
1 row in set (0.00 sec)
它确实在听:
# netstat -tl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:mysql 0.0.0.0:* LISTEN
因此,PHP 也失败了:
Warning: mysqli_connect(): (HY000/1698): Access denied for user 'root'@'localhost'
如何解决这个问题?也许有一个设置禁用基于密码的 TCP 登录?
更新:appearedlocalhost 表示本地套接字,因此我为 TCP 连接创建了另一个记录 'root'@'127.0.0.1'。
CREATE USER 'root'@'127.0.0.1';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1';
FLUSH PRIVILEGES;
但还是不行:
# mysql --protocol=TCP --host=127.0.0.1
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
密码未设置。
mysql> SELECT host, user, authentication_string FROM mysql.user;
+-----------+------------------+-------------------------------------------+
| host | user | authentication_string |
+-----------+------------------+-------------------------------------------+
| localhost | root | |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | debian-sys-maint | *4CF7B81390C295E6AF38067F3B621BBF736D3366 |
| 127.0.0.1 | root | |
+-----------+------------------+-------------------------------------------+
4 rows in set (0.01 sec)
UPDATE 2:我从头开始,所以这是失败的测试:
mysql -h 127.0.0.1
但重新创建用户后,它开始工作:
DROP USER 'root'@'localhost';
CREATE USER 'root'@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
为什么它不适用于开箱即用的同一用户?
【问题讨论】:
-
见this 帖子。
-
我猜你有 mysql 的密码。两种情况都需要传递root密码
-
如果有密码,那么没有
-h的mysql将不起作用。 -
@RogerRV 我已经在 root 下。
-
@AlexHowansky 不错的领导 -
mysql -h localhost工作正常。一旦我检查它是否有帮助,我会接受必要的GRANT命令的答案。
标签: php mysql connection