由于某些原因,我无法远程连接到我的MySQL服务器。我已经尝试了一切,但仍然遇到错误。
root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl Enter password: ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using password: YES)
现在,我尝试跑步
GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX'; GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';`
还是一无所有!我做错了什么?
编辑 :my.cnf已注释掉绑定ip。
my.cnf
要将MySQL暴露给localhost以外的任何东西,您将必须具有以下行
对于mysql 5.6及以下版本
取消注释/etc/mysql/my.cnf并分配给您的计算机IP地址,并且不环回
/etc/mysql/my.cnf
对于mysql 5.7及更高版本
取消注释/etc/mysql/mysql.conf.d/mysqld.cnf并分配给您的计算机IP地址,并且不环回
/etc/mysql/mysql.conf.d/mysqld.cnf
#Replace xxx with your IP Address bind-address = xxx.xxx.xxx.xxx
bind-address = 0.0.0.0如果不想指定IP,则添加一个
bind-address = 0.0.0.0
然后停止并使用新的my.cnf条目重新启动MySQL。一旦运行,请转到终端并输入以下命令。
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;
如果您没有创建与上述相同的用户,则在本地登录时,您可能会继承基本的localhost特权,并且会出现访问问题。如果你想限制访问为myuser已经那么你就需要在GRANT语句的语法读了这里如果你通过这一切,仍然有问题发布一些额外的错误输出和my.cnf中适当的行。
注意:如果lsof不返回或找不到,则可以根据Linux发行版本在此处安装。您不需要lsof就能使事情正常运行,但是当事情没有按预期进行时,这非常方便。