MYSql 配置绑定地址设置为 0.0.0.0 但 netstat 在 Ubuntu 上显示不同

2024-03-17

关注此线程 https://stackoverflow.com/questions/11758339/error-2003-hy000-cant-connect-to-mysql-server-111。我已成功编辑 my.cnf 文件以注释掉#bind-address值并试图指定0.0.0.0以及我想要允许连接的具体 IP 地址。

我确实注意到,在执行此操作时 my.cnf 的链接如下:

lrwxrwxrwx   1 root root    24 Sep  9 06:21 my.cnf -> /etc/alternatives/my.cnf

然后这个 my.cnf 也被链接:

lrwxrwxrwx 1 root root 20 Sep  9 06:23 my.cnf -> /etc/mysql/mysql.cnf

所以实际上,我正在编辑 mysql.cnf 文件。

我停止/启动 MYSQL 服务器。

然后我运行netstat -nat | grep :3306它给了我一个:

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN 

然后我转到客户端并得到 Can't connect to MySQL server on 'server_name'

我究竟做错了什么?


绑定地址到0.0.0.0这只是允许其接受远程连接的步骤的一部分。这些步骤包括明确地进行 rem'ing# skip-networking

[mysqld]
bind-address    = 0.0.0.0
# skip-networking

并重新启动服务器。

然后你需要一个用户、主机组合来登录,最好是一个GRANT给数据库以足够的(不是过多的)权限来使用。

您可以使用以下命令查看当前用户select user,host from mysql.user

请参阅 MySQL 手册页面GRANT语法 http://dev.mysql.com/doc/refman/5.7/en/grant.html.

我写了一个小答案Here https://stackoverflow.com/a/39400389关于通配符%主机和其他次要细节。

测试说明如下:

create schema testDB007;
use testDB007;

create table t1
(   id int not null
);

CREATE USER 'jeffrey123z'@'%' IDENTIFIED BY 'mypass123^';
-- note password is mypass123^

GRANT ALL ON testDB007.* TO 'jeffrey123z'@'%';
SHOW GRANTS FOR 'jeffrey123z'@'%';

现在,上面的蓝色行(USAGE)几乎意味着用户可以登录,仅此而已。第 2 行显示PRIVILEGES对于来自的数据库GRANT cmd.

查看用户位于mysql.user:

就上图而言,

select user,host,password from mysql.user where user='jeffrey123z';

select user,host,authentication_string from mysql.user where user='jeffrey123z';

上面的第一个查询适用于 MySQL 5.7 之前的版本。第二个查询适用于 5.7 及更高版本。密码经过哈希处理。主机是通配符%意思是从任何主机登录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MYSql 配置绑定地址设置为 0.0.0.0 但 netstat 在 Ubuntu 上显示不同 的相关文章

随机推荐