MYSQL ERROR 1130 (HY000) 的错误解决方案

转载自:http://hi.baidu.com/leejun_2005/blog/item/d5f65e23864c91be4723e867.html


安装完MySQL后,远程连接数据库的时候,出现ERROR 1130 (HY000): Host '192.168.0.1' is not allowed to connect tothis MySQLserver提示信息,不能远程连接数据库。

更改环境mysql系统host环境变量值:(不推荐)

考虑可能是因为系统数据库mysql中user表中的host是localhost的原因,于是,我尝试把这个值改为自己服务器的ip,果然就好用了,不过用mysql -u root -p命令就连不上数据库了,需要用mysql -h 服务器ip -uroot-p因为默认的连接mysql数据库user表中host的值,而这个命令的默认host是localhost,就连不上了。

具体操作方法:

用localhost连接上mysql后,

mysql->use mysql;
mysql->update user sethost='123.456.789.254';(IP为你想要远程连接数据库的本地机器的IP)
\q;


退出mysql,然后重新启动mysql就可以了。

其他解决方案

改表法。

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改称"%"

mysql -u root -pvmware
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>flush privileges;
mysql>select host, user from user;


授权法。

例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY'mypassword' WITH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.0.1' IDENTIFIED BY'mypassword' WITH GRANT OPTION;

1045错误的解决方案

在安装完MYSQL后,初次使用PHP联接数据,系统报1045错误说明你没有将权限下放到远端连接帐户上,由于mysql的安全性在不断的提高,权限设置默认是拒绝的,你必须自己开放权限。
在服务器上用
mysql -h 192.168.0.1 -u root -p
mysql命令登录mysql数据库。然后用grant命令下放权限。
 
 GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'root-password' WITH GRANT OPTION;

***********************************************************************
phpMyAdmin说是用户名密码的问题,这就奇怪了,root用户名密码肯定没有问题,而且通过命令行连接没有问题。又仔细查看配置文件,还是没有问题。于是去搜了一下,找到这个解决方法.

先用root登录MYSQL服务器,执行
mysql>set  password for 你要用的用户名@"localhost"=old_password('这个用户的密码');

原因是因为你使用的mysql服务器版本中使用了新的密码验证机制,这需要客户端的版本要在4.0以上,原来的密码函数被改为old_password();,这样使用password()生成的密码在旧的版本上就可以解决这个问题了.


<think>好的,我现在需要处理用户关于MySQL错误2059HY000的问题。用户提到他们在连接MySQL时遇到了这个错误,具体是身份验证插件'caching_sha2_password'无法加载。我需要先理解这个错误的原因,然后找到正确的解决方案。 首先,我应该回忆一下MySQL的身份验证机制。从MySQL8.0开始,默认的身份验证插件从'mysql_native_password'改为了'caching_sha2_password'。这个改变可能导致旧的客户端或某些驱动程序不兼容,从而出现无法加载插件的错误。用户可能正在使用一个不支持新插件的客户端版本,比如某些老版本的PHPmysql扩展或者旧的MySQL连接器。接下来,我需要参考用户提供的引用内容。根据引用[1],解决方案包括修改MySQL的配置文件my.cnf,设置默认的身份验证插件为mysql_native_password,然后修改用户密码并刷新权限。用户给出的步骤是删除my.cnf中的注释或添加相关配置,然后执行SQL命令来更改用户认证方式和密码。此外,引用[2]提到在处理老旧MySQL版本时可能需要注意内存泄漏问题,但这可能与当前错误关系不大,但需要留意线程清理的配置。现在需要确认解决方案的正确性。修改默认身份验证插件确实可以解决兼容性问题,但用户需要确保在修改配置文件后重启MySQL服务,否则更改不会生效。另外,ALTERUSER语句中的BY'MyNewPass'部分需要替换为用户的实际密码,这一点需要提醒用户注意。另外,用户可能需要更新他们的客户端工具或驱动程序以支持新的身份验证插件,但这可能不是所有环境都可行,特别是在生产环境中。因此,修改服务器配置可能更直接有效。 还需要考虑用户是否有权限修改my.cnf文件,以及如何找到该文件的位置。通常,my.cnf位于/etc/mysql/或/etc/目录下,但不同安装方式可能路径不同。如果用户无法找到该文件,可能需要指导他们创建或查找正确的配置位置。 此外,执行FLUSHPRIVILEGES命令是为了让权限更改立即生效,但ALTERUSER已经隐式地执行了权限刷新,所以这一步可能不是必须的,但为了保险起见,按照引用中的步骤执行是合理的。 最后,需要验证解决方案是否有效。用户可能需要在修改配置并重启MySQL后,尝试重新连接,确保使用新的身份验证插件。如果仍然出现错误,可能需要检查配置文件是否正确加载,或者是否有其他配置冲突。 总结步骤应该是:修改配置文件,重启MySQL服务,更改用户认证方式,设置密码,然后测试连接。需要确保每一步都正确执行,避免遗漏。</think>### MySQL错误2059 (HY000) 解决方案 当连接MySQL出现`ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded`时,通常是由于客户端不支持MySQL 8.0默认的`caching_sha2_password`身份验证插件。以下是分步解决方案: --- #### **步骤1:修改MySQL配置文件** 1. 打开MySQL配置文件`my.cnf`(路径可能为`/etc/my.cnf`或`/etc/mysql/my.cnf`)。 2. 添加或取消注释以下配置项: ```ini default-authentication-plugin=mysql_native_password ``` 此配置将默认身份验证方式改为旧版兼容模式[^1]。 --- #### **步骤2:重启MySQL服务** ```bash systemctl restart mysql # 或 service mysql restart ``` --- #### **步骤3:修改用户密码认证方式** 1. 登录MySQL: ```bash mysql -u root -p ``` 2. 执行以下SQL命令修改用户认证方式: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码'; FLUSH PRIVILEGES; ``` 将`你的新密码`替换为实际密码[^1]。 --- #### **步骤4:验证连接** 重新使用客户端连接MySQL错误应已解决。 --- #### **替代方案:升级客户端驱动** 如果无法修改服务端配置,可升级客户端工具或驱动(如MySQL Connector/J、PHP PDO等)至支持`caching_sha2_password`的版本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值