由于某种原因,我无法远程连接到我的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)

现在,我试着 run

 GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX'; 
 GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';` 

还是什么都没有!

EDIT:my.cnf注释掉了绑定ip.

推荐答案

要将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

Mysql相关问答推荐

从 SQL 中的左连接和内连接中减去计数

保存SQL查询的中间结果

我在查询中没有得到正确的结果

如何查询打印已售罄的产品? [MYSQL]

MySQL 查询组按日期(12 小时间隔)

添加一个日期字段大于另一个日期字段的要求

DECIMAL(m, n) 在 64 位系统中如何表示?

如何在 SQL 中的一行中查找最小值和最大值?

如何使用nodejs从mysql数据库中获取最新的10条记录?

如何按给定开始日期和结束日期的月份汇总?

如何检索 MySQL 数据库管理系统 (DBMS) 的当前版本?

pip install mysqlclient 返回“致命错误 C1083:无法打开文件:'mysql.h':没有这样的文件或目录

MySQL 8.0 上的 phpMyAdmin

Mysql 错误:try 转储表空间时,指定为定义者的用户 ('mysql.infoschema'@'localhost') 不存在'

Yii2 如何进行 where AND 或 OR 条件分组?

Hibernate 生成的 DDL 中的无效语法错误“type=MyISAM”

Sequelize Query 查找日期范围内的所有记录

MySQL 错误: '访问被拒绝用户'root'@'localhost'

的表存储引擎在按查询排序时没有此选项(错误 1031)

用于判断名称是否以元音开头和结尾的 SQL 查询