这个问题可能是由于MySQL数据库服务器没有设置允许来自远程主机的连接,或者没有正确设置用户名和密码所致。为了解决这个问题,我们可以采取以下步骤:
- 修改MySQL数据库配置文件
首先需要修改MySQL数据库的配置文件 my.cnf
,打开终端并输入以下命令查看文件是否存在:
$ sudo ls -ahl /etc/mysql/my.cnf
如果文件不存在,可以通过以下命令进行安装:
$ sudo apt install mysql-server
然后备份并编辑MySQL的配置文件:
$ sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
$ sudo vim /etc/mysql/my.cnf
在 [mysqld]
段添加以下三行配置:
bind-address = 0.0.0.0
skip-networking = 0
这将使MySQL服务器接受来自任何远程主机的连接请求。此时需要重启MySQL服务以应用新的配置:
$ sudo systemctl restart mysql.service
- 创建用户并设置权限
为了在远程主机上连接到MySQL服务器,需要创建一个新的MySQL用户,赋予其授权,并指定相应的密码。下面是一个示例:
$ mysql -u root -p
mysql> CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'mypassword';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
在此示例中,我们创建了一个名为 remoteuser
的MySQL用户,并为其指定了一个名为 mypassword
的密码。我们还将该用户的权限设置为在所有数据库和表上拥有所有权限,并赋予该用户授权其他用户。最后,我们刷新MySQL的权限表使更改生效。
- 防火墙设置
如果您的服务器上配置了iptables防火墙,需要允许入站MySQL端口的流量。MySQL默认情况下使用3306端口。以下是一条iptables规则,允许从任何源IP地址到达数据库服务器的MySQL端口:
$ sudo iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT
- 测试连接
此时,您应该能够从远程主机登录到MySQL服务器。例如,在远程主机上使用以下命令:
$ mysql -h server_ip_address -u remoteuser -p
其中 server_ip_address
是您MySQL服务器的IP地址,remoteuser
是您创建的MySQL用户,mypassword
是您指定的密码。
示例:
$ mysql -h 192.168.1.100 -u remoteuser -p
如果连接成功,您应该能够在MySQL提示符下看到一个类似于以下内容的欢迎消息:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
...
mysql>
现在,您已经成功地将MySQL设置为远程连接,可以在远程主机上使用相应的工具进行连接和管理数据库。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决mysql数据库设置远程连接权限执行grant all privileges on *.* to ‘root’@’%’ identified by ‘密码’ with grant optio报错 - Python技术站