无法远程访问Mysql的解决方案

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 在网上有很多关于这个的解决方案,我也采用了 写的比较详细的如:  1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"loc...

在网上有很多关于这个的解决方案,我也采用了
写的比较详细的如:
 1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
CODE:mysql -u root -p123
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
  2. 授权法。例如,你想kevin使用mypassword从任何主机连接到mysql服务器的话。
CODE:GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
  如果你想允许用户kevin从ip为192.168.101.234的主机连接到mysql服务器,并使用mypassword作为密码
CODE:GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'192.168.101.234' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
  3.如果按照上面这样做还不行(一般好像在windows下那样就可以了)那就修改下面这个配置文件吧(我是在linux环境下 大家可以找到自己mysql安装目录下的相应配置文件)
CODE:vi /etc/mysql/my.cnf
  注释掉
CODE:#bind-address = 127.0.0.1
  大功告成!!!

然后我采用的是第一种方法,然后在运行完最后一句话后出了个错误ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 
于是又去找解决方案,发现先
mysql> select host from user where user = 'root'; 

+-----------------------+ 
| host | 
+-----------------------+ 
| % | 
| 127.0.0.1 | 
| localhost.localdomain | 
+-----------------------+ 
3 rows in set (0.00 sec) 
host已经有了%这个值,所以直接运行命令: 

mysql>flush privileges; 
果然还行的通,由于对mysql不是很深入的了解,通过php果然可以远程访问了,但是我忽略了一点
这里将host = '%'后,是可以远程访问了,但是我们使用root不能访问本地了
这是由于%的意思就是允许除本机外的所有都可以访问

如果前面已经如上操作了,那么你再在本地访问的时候
#mysql -u root -p
输入密码后会提示

 

 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 
这就很郁闷,本机已经无法登陆了,这时我们需要安全模式进入(个人理解为安全模式)
首先,将mysql服务停止
#/etc/init.d/mysql stop   或者  #sudo service mysqld stop
然后再执行
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
记住  后面那个  &是需要的
等出现一些提示后  应该是在starting...之后
直接输入  mysql 即可进入数据库了  (这里其实也可以是忘记密码后进行修改密码的方法)
进入后,修改密码的语句为:
mysql> use mysql;   
进入数据库修改密码
mysql> update user set password = PASSWORD('你的新密码') where user='root'
如果是要解决上面修改了host的方法就是执行
mysql> update user set host='localhost' where user='root' and host='%'
将host改回来

但是改回来岂不是又无法远程访问了?
其实我们可以新增一个用户,把必要的权限授予于这个用户,且将这个用户的host设为%

过程中出现的错误要仔细查看,要注意防火墙的状态,可能影响数据库的远端连接。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
解决MySQL主从慢同步问题的常见的解决方案:
解决MySQL主从慢同步问题的方法有很多,以下是一些常见的解决方案: 1. 检查网络连接:确保主从服务器之间的网络连接稳定,避免网络延迟或丢包导致数据同步缓慢。 2. 优化数据库配置:调整MySQL的配置参数,如增大binlog文件大小、调整innodb_flush_log_at_trx_commit等参数,以提高主从同步性能。 3. 检查IO线程和SQL线程状态:通过SHOW SLAVE STATUS命令检查IO线程和SQL线程的状态,确保它们正常运行并没有出现错误。 4. 检查主从日志位置:确认主从服务器的binlog文件和位置是否正确,避免由于错误的日志位置导致同步延迟。 5.
125 1
|
1月前
|
网络协议 关系型数据库 MySQL
如何实现无公网ip远程访问本地安卓Termux部署的MySQL数据库【内网穿透】
如何实现无公网ip远程访问本地安卓Termux部署的MySQL数据库【内网穿透】
|
5月前
|
druid 前端开发 关系型数据库
mysql使用druid时自动断开连接解决方案
mysql使用druid时自动断开连接解决方案
131 0
|
1月前
|
关系型数据库 MySQL 数据库
深入探讨MySQL并发事务的问题及解决方案
深入探讨MySQL并发事务的问题及解决方案
75 0
|
4月前
|
存储 关系型数据库 MySQL
Flink CDC中mysql cdc 抽取这个时间字段的值为null 有什么好的解决方案吗 ?
Flink CDC中mysql cdc 抽取这个时间字段的值为null 有什么好的解决方案吗 ?
99 0
|
4月前
|
关系型数据库 MySQL
MySQL中数据插入与主键冲突解决方案
MySQL中数据插入与主键冲突解决方案
195 0
|
2月前
|
关系型数据库 MySQL 数据库
Host 'XXX' is not allowed to connect to this MySQL server 解决方案
Host 'XXX' is not allowed to connect to this MySQL server 解决方案
|
2月前
|
SQL 关系型数据库 MySQL
MySQL - 死锁的产生及解决方案
MySQL - 死锁的产生及解决方案
199 0
|
3月前
|
JavaScript 前端开发 关系型数据库
针对Mysql转义反斜杠的解决方案
针对Mysql转义反斜杠的解决方案
42 2
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB MySQL标准版:低成本高性能的数据库解决方案
PolarDB MySQL标准版:低成本高性能的数据库解决方案 随着数字化时代的到来,企业对于数据处理的需求越来越高,而数据库作为数据处理的核心,其性能和成本成为了企业关注的焦点。阿里云全新推出的PolarDB MySQL标准版,以全新的架构和优化,为企业提供了高性能、低成本的数据库解决方案。
129 2