Mysql 开启远程访问权限失败,怎么处理?
想必大家配置好服务器Mysql后,本地连接远程数据库后发现连接失败。
大致原因:是服务器数据库设置只能服务器访问,无法通过其他IP进行访问。
所以,我们需要把访问设置为所有IP均可通过账户密码进行访问(可将Host设置为‘%’,但是这样很危险,不建议)。
具体方法如下:
方法一:
- 在服务器里,我们管理员运行cmd,然后输入
mysql -u root -p
- 输入完毕后,就会提示我们输入密码,这时候我们输入数据库密码,如图所示:
- 我们输入我们的密码后,当你看到这个界面,说明数据库登录成功(如果不成功,检查数据库用户名和密码是否正确):
- 这个时候,我们就要输入以下内容:
GRANT ALL PRIVILEGES ON *.* TO '数据库用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
- 输入完毕后,执行刷新权限即可:
flush privileges;
不过需要注意的点,语句后面的分号不能丢掉。
当然,很多朋友可能会问,为什么我输入第四步后,报错了,报错内容如下:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'ident
ified by '密码' with grant option' at line 1
原因就是Mysql 8.0以后,都不能这样输入,不适用于。应该按照以下方法来操作:
方法二:
- 步骤同方法一的1,2,3 都需要先登录进去
- 接下来输入:
create user 'root'@'%' identified by '密码';
grant all on *.* to 'root'@'%';
alter user 'root'@'%' identified with mysql_native_password by '密码';
每条输入完,都执行一次。当三条都输入完后,是这样的:
出现Query OK 0 rows affected 即代表执行成功
- 当上述三条都输入完毕后,我们刷新权限即可正常使用。
flush privileges;
最后,当我们都成功执行刷新完毕后,就可以重新发起连接,不需要重启服务器。
提示:
1.如果方法二的第一条语句执行失败,那就drop root,重新create就行