我通常正确设置 MySQL 以进行远程访问。
目前我被 MySQL 8 卡住了。
首先是在 mysql.conf.d/mysqld.cnf 上,我没有任何 bind-address 行,所以我手动添加了它(bind-address 0.0.0.0)并且我授予用户访问权限'%'
当我连接时,我收到消息“身份验证失败”
但它在本地主机/命令行上运行良好
我通常正确设置 MySQL 以进行远程访问。
目前我被 MySQL 8 卡住了。
首先是在 mysql.conf.d/mysqld.cnf 上,我没有任何 bind-address 行,所以我手动添加了它(bind-address 0.0.0.0)并且我授予用户访问权限'%'
当我连接时,我收到消息“身份验证失败”
但它在本地主机/命令行上运行良好
bind_address
参数。my.ini
(文件名因操作系统而异。在 Linux 上 my.ini 实际上是 my.cnf 位于目录 /etc/mysql/ 中)
创建root
用户(是的,一个新用户,因为存在的是 'root@localhost' ,它仅是本地访问):
CREATE USER 'root'@'%' IDENTIFIED BY '123';
给予特权:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
对于DBA用户,
WITH GRANT OPTION
请在末尾添加。例如
CREATE USER 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
因为它不能与 GRANT 一起使用 CREATE?
MySQL 8不能再用 来创建用户GRANT
,所以IDENTIFIED BY '123'
如果你尝试用它来使用它会有一个错误GRANT
,这是最常见的错误。
MySQL 8 中的远程访问:
1)允许从任何主机访问
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
2)允许用户从任何地方访问:
mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
UPDATE mysql.user SET host='%' WHERE user='root';
3)将身份验证更改为密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'ThePassword';
对于 MySQL 8,打开 mysqld.cnf 文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
并修改或添加绑定地址选项:
[mysqld]
bind-address = 0.0.0.0
重启mysql服务器
sudo service mysql restart