要将MySQL公开给localhost之外的任何对象,您必须具备以下几行代码
For mysql version 5.6 and below
在/etc/mysql/my.cnf
中未注释,并分配给您的计算机IP地址,而不是环回
For mysql version 5.7 and above
在/etc/mysql/mysql.conf.d/mysqld.cnf
中未注释,并分配给您的计算机IP地址,而不是环回
#Replace xxx with your IP Address
bind-address = xxx.xxx.xxx.xxx
或者添加一个
然后停止并用新的my重新启动MySQL.cnf入口.运行后,转到终端并输入以下命令.
lsof -i -P | grep :3306
这应该会在xxx的实际IP中返回类似的内容
mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN)
如果上述语句返回正确,那么您将能够接受远程用户.但是,要让远程用户使用正确的权限连接,需要在本地主机和"%"中创建该用户,如中所示.
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
然后
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
最后,
FLUSH PRIVILEGES;
EXIT;
如果您没有像上面那样创建相同的用户,那么当您在本地登录时,您可能会继承基本本地主机权限,并出现访问问题.如果你想限制myuser的访问权限,那么你需要仔细阅读GRANT语句语法HERE,如果你完成了所有这些,并且在发布一些额外的错误输出和my语句时仍然存在问题.cnf合适的线路.
注意:如果lsof没有返回或找不到,您可以根据您的Linux发行版HERE安装它.你不需要lsof来让事情顺利进行,但当事情没有按预期进行时,它非常方便.
更新:如果在my.cnf
中添加/更改bind-address
后仍不起作用,则在最初声明的位置进行更改:
/etc/mysql/mariadb.conf.d/50-server.cnf