当前位置: 首页 > 知识库问答 >
问题:

所有主机的MySQL根访问

萧琛
2023-03-14

我已经在一台远程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 |
+------------------+------+-------------------------------------------+

我可以使用标准的MySQL客户端,通过用户root从同一远程计算机命令行界面进行访问。现在我想允许internet上每台主机的根用户访问,所以我尝试添加以下行(它与上一个转储中的第一行完全重复,除了host列):

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

但我个人电脑上的客户继续告诉我(我遮住了服务器IP):

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

我分不清是身份验证错误还是网络错误。在服务器防火墙上,我为0.0.0.0/0启用了端口3306/TCP,这对我来说是可以的...

共有1个答案

东方国安
2023-03-14

在这个过程中有两个步骤:

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上)

 类似资料:
  • 问题内容: 我已经在远程Ubuntu计算机上安装了MySQL服务器。通过以下方式在表中定义用户: 我可以使用标准客户端从同一远程计算机命令行界面与用户访问。现在,我想 允许来自Internet上每台主机的root用户访问权限 ,因此我尝试添加以下行(这与上一转储的第一行完全相同,但该列除外): 但是我个人PC上的客户端继续告诉我(我掩盖了服务器IP): SQL错误(2003):无法连接到“ 46.

  • 问题内容: 当我以普通用户身份运行容器时,我可以映射 和修改 主机文件系统上root拥有的目录。这似乎是一个很大的安全漏洞。例如,我可以执行以下操作: 现在,我的 主机 文件系统将在键入时执行命令(大多数情况下无害)。我不敢相信这是理想的行为,但是它正在我的系统中发生(debian延伸)。该命令具有普通权限(755,不是setuid)。 我想念什么? 可能需要澄清更多。目前,我对容器本身的作用或可

  • 本文向大家介绍python实现根据主机名字获得所有ip地址的方法,包括了python实现根据主机名字获得所有ip地址的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现根据主机名字获得所有ip地址的方法。分享给大家供大家参考。具体实现方法如下: 运行结果: 希望本文所述对大家的Python程序设计有所帮助。

  • 如何让docker中的Spring应用程序主机访问主机mechine(mac)上的mysql主机或访问云mysql服务? 我知道如果mysql是另一个docker容器,我可以在docker中使用link。但这种情况不是。 版本:“3” 我尝试了主机模式,似乎仍然无法连接。 Dockerfile docker撰写。yml 附言:“java-jar-Dspring。简介。活动=开发应用程序。我的主机上

  • 问题内容: 我有一个在xxxx上运行的mysql服务器,并且可以在内部访问它(当然)。但是,当尝试从外部进行连接(即使用mysql工作台,甚至从外部服务器进行连接)时,出现错误消息“不允许主机’bla.bla.bla’连接至该MySQL服务器”。 我已经做好了: 我已经在iptables中打开了端口3306。 我还有另一个基本的安全问题吗? 问题答案: 你需要做 后面的部分是连接所来自的主机,因此

  • 问题内容: 我将开发环境设置为vmware中的Ubuntu服务器(安装了LAMP)。vmware在我的本地Windows 7计算机上运行。当我尝试通过HeidiSQL程序访问我的mysql服务器时,连接失败。我得到: 但是,我可以通过PhpMyAdmin访问数据库服务器。MySQL正在运行,我的连接凭据和端口均正确。 我读到您应该输入要连接的计算机的IP地址,作为my.cnf文件中的“绑定地址”。