小编典典

来自所有主机的 MySQL root 访问权限

all

我已经在远程 Ubuntu 机器上安装了 MySQL 服务器。root用户在表中以这种mysql.user方式定义:

mysql> SELECT host, user, password FROM user WHERE user = 'root';
+------------------+------+-------------------------------------------+
| host             | user | password                                  |
+------------------+------+-------------------------------------------+
| localhost        | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ip-10-48-110-188 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| 127.0.0.1        | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ::1              | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+

我可以root使用标准客户端从同一个远程计算机命令行界面与用户一起访问mysql。现在我想 允许从 Internet 上的每个主机进行 root
访问
,所以我尝试添加以下行(它与先前转储中的第一行完全相同,host列除外):

mysql> SELECT host, user, password FROM user WHERE host = '%';
+------------------+------+-------------------------------------------+
| host             | user | password                                  |
+------------------+------+-------------------------------------------+
| %                | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+

但是我个人 PC 上的客户端继续告诉我(我隐藏了服务器 IP):

SQL 错误 (2003): 无法连接到“46.xxx”上的 MySQL 服务器 (10061)

我不知道这是身份验证错误还是网络错误。在服务器防火墙上,我为 0.0.0.0/0启用了端口 3306/TCP ,这对我来说没问题… __


阅读 74

收藏
2022-07-31

共1个答案

小编典典

更新:

正如评论中提到的,由于 MySql 8 您需要首先显式创建用户,因此命令将如下所示:

CREATE USER 'root'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

原答案:

这个过程有两个步骤:

a) 授予特权。作为 root 用户执行此替换'password'为您当前的 root 密码:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

b) 绑定到所有地址:

最简单的方法是 注释掉 文件中的行my.cnf

#bind-address = 127.0.0.1

并重新启动mysql

service mysql restart

默认情况下,它只绑定到 localhost,但如果你注释它绑定到它找到的所有接口的行。注释掉该行相当于bind-address=*.

要检查 mysql 服务绑定的位置,请以 root 身份执行:

netstat -tupan | grep mysql

Ubuntu 16 更新:

配置文件是(现在)

/etc/mysql/mysql.conf.d/mysqld.cnf

(至少在标准 Ubuntu 16 上)

2022-07-31