mysql数据库备份中的user表里host为%的数据库无法访问

laokaddk 的BLOG
用户名:laokaddk
文章数:983
评论数:102
访问量:2130097
注册日期:
阅读量:5863
阅读量:12276
阅读量:309099
阅读量:1025374
51CTO推荐博文
连接MySQL数据库时常见故障问题的分析与解决初学的mysql网友好象经常会碰到mysql无法连接的错误。特开贴收集这样问题的现象和原因。 先自己扔块砖头出来。 归纳如下:故障现象 : 无法连接 mysql =============================================================================错误信息1 :ERROR ): Access denied for user 'usera'@'localhost' (using password:YES)错误信息2 :ERROR ): Access denied for user 'usera'@'localhost' (using password:NO) 下面,首先分析说明这两种错误信息分别在什么情况下会出现:描述:使用mysql连接命令或连接工具,对远程数据库进行连接时,可能会出现以上两种错误信息,下面以命令的连接方式进行说明。当使用mysql里连接命令时,若带-p参数且指明密码,或带-p参数不指明密码,但在下一步输入密码时有字符串输入,则返回的是“错误信息1”,若不带-p参数,或带-p参数但在下一步输入密码时,不输入任何字符,则返回的是“错误信息2”,如下所示:C:\Documents and Settings\Administrator&mysql -uroot -h 192.168.8.88 -proot
//带-p参数,并指明密码ERROR ): Access denied for user
(using password: YES)C:\Documents and Settings\Administrator&mysql -uroot -h 192.168.8.88 -p
//带-p参数,在下一步进行密码输入Enter password:
//有字符串输入ERROR ): Access denied for user
(using password: YES)C:\Documents and Settings\Administrator&mysql -uroot -h 192.168.8.88
//不带-p参数ERROR ): Access denied for user
(using password: NO)C:\Documents and Settings\Administrator&mysql -uroot -h 192.168.8.88 -p
//带-p参数,在下一步进行密码输入Enter password:
//无字符串输入ERROR ): Access denied for user
(using password: NO)上面的对比可总结出一点,使用mysql命令进行登录时,若有密码输入行为并输入了字符,则验证出错后,则返回的错误提示中,对于 (using password: ?)中?的关键字,则返回的是YES,若没有密码输入行为,或无密码字符输入,则返回的是NO。除上面的实验对比,还进行了如下的登录对比操作,并记录了他们所返回错误提示类型,对上面的总结进行验证:1.使用存在的用户,不输入密码ERROR ): Access denied for user
(using password: NO)2.使用不存在的用户,不输入密码ERROR ): Access denied for user
(using password: NO)3.使用存在的用户,且输入密码正确ERROR ): Access denied for user
(using password: YES)4.使用存在的用户,但输入密码不正确ERROR ): Access denied for user
(using password: YES)5.使用不存在的用户,但输入数据库中存在的某一个密码ERROR ): Access denied for user
(using password: YES)6.使用不存在的用户,且输入数据库中不存在的一个密码ERROR ): Access denied for user
(using password: YES)总结:对于 ERROR ): Access denied for user
此类错误返回时, (using password: ?)中?的关键字是YES还是NO,关键不在于用户是否存在,密码是否正确,它的结果取决于登录时,用户对于密码有没有字符串的输入,如果没有,MySQL数据库验证后,若出错返回此类信息,则应是 (using password: NO),若用户对密码有字符串的输入,返回的则是(using password: YES)。下面分析这类 ERROR ): Access denied for user 错误出现的原因:原因1 : 客户端远程访问的用户账号并未创建检查 :以管理员ROOT登录后,show grants for ‘; 或者 select user from mysql. 确认用户账号是否存在。mysql& show grants for ;ERROR ): There is no such grant defined for user 'jtsec' on host '192.168.8.123'mysql& 返回信息:ERROR ): There is no such grant defined for user 'jtsec' on host '192.168.8.123'说明,没有jtsec用户,或者没有对jtsec用户进行在192.168.8.123远程访问的授权。mysql& select user,host from mysql.+-------+---------------+| user | host
|+-------+---------------+| root | localhost
| +-------+---------------+1 rows in set (0.00 sec)mysql& 关于user记录数只有一条,是root,并没有jtsec相关的记录,说明没有数据库中没有jtsec这个帐号。处理 :创建用户账号。mysql& grant all privileges on *.* to
identified by 'jtsec'Query OK, 0 rows affected (0.00 sec)mysql&Query OK, 0 rows affected (0.00 sec)mysql& show grants for ;+---------------------------------------------------------------------------------------------------------------------------------------------+| Grants for
|+---------------------------------------------------------------------------------------------------------------------------------------------+| GRANT ALL PRIVILEGES ON *.* TO
IDENTIFIED BY PASSWORD '*0B4AB716B6BE11FF3016D8EEAA217' WITH GRANT OPTION | +---------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)mysql& select user,host from mysql.+-------+---------------+| user | host
|+-------+---------------+| jtsec | 192.168.8.157 | | root | localhost
| +-------+---------------+2 rows in set (0.00 sec)mysql& 原因2 : 用户账号存在,但未对其所在的客户端的IP进行远程访问授权允许检查 :以管理员ROOT登录后 show grants for ;mysql& show grants for ;ERROR ): There is no such grant defined for user 'root' on host '192.168.8.123'mysql& 返回信息:ERROR ): There is no such grant defined for user 'root' on host '192.168.8.123'说明,没有root用户(因为是MySQL超级用户所以排除此种可能),或者没有对root用户进行在192.168.8.123远程访问的授权。我们来对比一下看,root用户本地访问的权限,则可查出:mysql& show grants for ;+----------------------------------------------------------------------------------------------------------------------------------------+| Grants for
|+----------------------------------------------------------------------------------------------------------------------------------------+| GRANT ALL PRIVILEGES ON *.* TO
IDENTIFIED BY PASSWORD '*81F5E21ECD4A731AEBFB6AF209E1B' WITH GRANT OPTION |+----------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)或者直接查询mysql的user用户表select user,host from mysql.,其中记录了每一个用户的权限信息mysql& select user,host from mysql.+-------+---------------+| user | host
|+-------+---------------+| root | localhost
| +-------+---------------+1 rows in set (0.00 sec)mysql& 关于user值为root的记录数只有一条,且host值为localhost,说明root用户只能在本地访问数据库。处理 :进行root用户的远程访问授权,可以授权到指定的客户端IP,也可以授权为所有IP都可访问(host值为%)。授权为所有IP都使用用户root,密码root,来远程访问数据库mysql& GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY 'root' WITH GRANT OPTION;Query OK, 0 rows affected (0.00 sec)mysql&Query OK, 0 rows affected (0.00 sec)再次进行授权的查询mysql& show grants for ;+--------------------------------------------------------------------------------------------------------------------------------+| Grants for
|+--------------------------------------------------------------------------------------------------------------------------------+| GRANT ALL PRIVILEGES ON *.* TO
IDENTIFIED BY PASSWORD '*81F5E21ECD4A731AEBFB6AF209E1B' WITH GRANT OPTION |+--------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)再次查询授权表记录mysql& select user,host,password from mysql.+-------+---------------+-------------------------------------------+| user | host
| password
|+-------+---------------+-------------------------------------------+| root | localhost
| *81F5E21ECD4A731AEBFB6AF209E1B | | root | %
| *81F5E21ECD4A731AEBFB6AF209E1B | +-------+---------------+-------------------------------------------+2 rows in set (0.00 sec)mysql& 原因3 : 用户账号授权访问的密码不正确检查 :以管理员ROOT登录后, select user,host,password from mysql.mysql& select user,host,password from mysql.+-------+---------------+-------------------------------------------+| user | host
| password
|+-------+---------------+-------------------------------------------+| root | localhost
| *81F5E21ECD4A731AEBFB6AF209E1B | | root | %
| *81F5E21ECD4A731AEBFB6AF209E1B | | jtsec | 192.168.8.123 |
|| jtsec | 192.168.8.123 | *0B4AB716B6BE11FF3016D8EEAA217 | +-------+---------------+-------------------------------------------+4 rows in set (0.00 sec)mysql& 根据查询结果可以看出来,root账户的本地访问和远程访问密码一样。而jtse账户在192.168.8.123这个IP上,远程访问数据库的密码有两个,其中一个为空(第三条记录)。也就是说在IP为192.168.8.123的客户机上,使用jtsec这个账户远程访问数据库,合法的密码有两个可以选择:一个是不输入密码(密码为空),另一个是*0B4AB716B6BE11FF3016D8EEAA217(经过加密的),其余的输入,都是错的。处理 :使用正确的访问密码进行访问即可。===================================================================================错误信息 :ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.8.88' (10065)原因 :MySQL服务器上防火墙的阻断检查 :在Linux下查看iptables规则,看是否未对MySQL数据库默认通信端口3306进行放行处理 :添加相应的放行规则自己在
/etc/sysconfig/iptables 里加了一下代码:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT或尝试关掉防火墙
chkconfig ip6tables off
chkconfig iptables off问题描述: C:\Documents and Settings\Administrator&mysql -uroot -h 192.168.8.88 -prootERROR 2003 (HY000): Can't connect to MySQL server on '192.168.8.88' (10065)C:\Documents and Settings\Administrator&===================================================================================错误信息 :ERROR 2003 (HY000): Can't connect to MySQL server on 'hostxxxxx' (10061)原因 : mysqld数据库服务没有启动。检查 :在windows 的任务管理器,或者 unix/linux 下 ps -aux | grep mysql 看一下。确认服务已经启动。处理 :启动mysqld 服务===================================================================================错误信息 :ERROR 1130: Host xx.xx.xx.xx is not allowed to connect to this MySQL server 原因 : mysql服务器没有赋予此客户端远程连接的权限。 检查 :在mysql服务器本地查询mysql库里user表对应的host是否包含客户端机器的IP(%为不限制IP允许远程连接)。 处理 :修改mysql库下的user表:update user set host = '%' where user ='XXX';===================================================================================错误信息 :ERROR ): Access denied for user 'usera'@'localhost' (using password:NO)原因 : 用户账号并未创建,远程登录时登录指令未直接包含密码项检查 :以管理员ROOT登录后,show grants for 'usera'@'localhost'; 或者 select user from mysql. 确认用户账号是否存在。处理 :创建用户账号。===================================================================================错误信息 :ERROR 2003 (HY000): Can't connect to MySQL server on 'hostxxxxx' (10061) 原因 : mysqld 客户端与服务端端口不一致。 检查 :在my.ini 设置下服务端口 这种情况特别是客户都与远程服务器端口不一致 很容易出现的问题处理 :启动mysqld 服务 ===================================================================================错误信息 :ERROR 2002 (HY000): Can't connect to local MySQL server server through socket '/var/lib/mysql/mysql.sock'(111) 原因 : mysqld的mysql.sock没在相应的位置。处理 : 1.先查看/etc/rc.d/init.d/mysql status 看看是否启动 2.改权限 chown -R mysql:msyql /var/lib/mysql 3.修改/f (注意:先停数据库) [mysqld] datadir=/usr/local/mysql/data socket=/var/lib/mysql/mysql.sock [mysql.server] user=mysql basedir=/usr/local/mysql [client] socker=/var/lib/mysql/mysql.sock 4.启动数据库===================================================================================常用检查步骤。1. PING hostname 或 PING 189.xx.xx.xx 确认服务器IP层通信没有问题。如果PING通则继续(2),PING不通则找网络方面专家协助。2. TELNET hostname 3306 确认服务器TCP层通信没有问题。(你的端口号可能不是3306),如通则继续,如不通,请检查mysqld 是否已经在运行,防火墙屏蔽了端口。3. 检查用户权限, show grants ... 或 select user,host,password from mysql.===================================================================================故障现象 : 本地无法 mysql -u root -p 用原来的密码登录,但可以用无密码,远程必须用原密码登录 错误信息 :ERROR ): Access denied for user 'root'@'localhost' (using password: YES)原因 : 未知,不知道是否mysql的新密码控制策略检查 :mysql -u root 密码空登录无问,远程用navica mysql无密码有问题,有密码无问题处理 :暂时先把本地登录的密码去掉版本环境:mysql Ver 14.14 Distrib 5.1.56, for debian-linux-gnu (i486) using readline 6.2问题分析(lioncode):Start --&MySQL数据库的用户信息均保存在mysql.user表中,其中包括用户的用户名,密码,授权的范围(可授权登录的IP、可进行的数据库操作的类型)等信息,有必要查看一下该表中对于root用户的相关记录项,对于上述现象对应的查询结果可能是这样的:出问题前该表中的数据如果是这样的:mysql& select user,host,password from mysql.+-------+---------------+-------------------------------------------+| user | host
| password
|+-------+---------------+-------------------------------------------+| root | localhost
| *81F5E21ECD4A731AEBFB6AF209E1B || root | %
| *81F5E21ECD4A731AEBFB6AF209E1B |+-------+---------------+-------------------------------------------+2 rows in set (0.00 sec)mysql& 出问题后该表中的数据可能是这样的:mysql& select user,host,password from mysql.+-------+---------------+-------------------------------------------+| user | host
| password
|+-------+---------------+-------------------------------------------+| root | localhost
|| root | %
| *81F5E21ECD4A731AEBFB6AF209E1B | +-------+---------------+-------------------------------------------+2 rows in set (0.00 sec)mysql& 第一条数据,解释了,为什么在本地无法用原来的密码登录,但却可以用无密码登录成功。原本,本地登录的密码和远程登录的密码是一样的,都为*81F5E21ECD4A731AEBFB6AF209E1B (加密后的),但是,由于某种原因,本地登录的密码被清空了,所以用原来的密码就不能登录了。第二条数据,解释了,为什么远程必须用原密码登录。root用户本地登录密码的设定和root用户远程登录密码的设定,分别是两条不同的数据,所以本地登录的密码被改,并不影响远程登录的密码。&-- End==================================================================================故障现象 : 无法连接 mysql windows错误信息 :ERROR 2003 (HY000): Can't connect to MySQL server on 'hostxxxxx' (10061) 原因 : 同时开启大量的tcp端口和而仅有一小部分短命端口时,当他们处于time_wait时期,mysql可能会跑错端口检查 :在windows 默认会开启5000个临时端口供调用,而他们的生命仅仅是120s,意思是在关闭端口的时候会有120秒的延时处理 :减少不不必要的tcp端口。修改注册表==================================================================================求助,不知道大家有一样的情况没有?Lost connectiion to MySQL server during query.按照网上说的方法仍没解决,楼主是否碰见过? ==================================================================================Lost connection to MySQL server at 'reading initial communication packet', system error: 0什么问题??Author: lioncodeCMP: JTSEC-RDDate:
18:14Project: jtsec_one-way_dbsyncVersion: v1.0.0
了这篇文章
类别:┆阅读(0)┆评论(0)
09:46:26 09:50:40mysql数据库远程访问设置方法
mysql数据库远程访问设置方法
1、修改localhost
更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改成"%"
mysql&update user set host = '%' where user = 'root';
mysql&select host,
mysql&FLUSH PRIVILEGES;
2、指定授权
使用myuser/mypassword从任何主机连接到mysql服务器:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY
'mypassword' WITH GRANT OPTION;
使用myuser/mypassword从ip为192.168.225.166的主机连接到mysql服务器:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.225.166'
IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
mysql -h localhost -u root
mysql&GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH
GRANT OPTION; //赋予任何主机上以root身份访问数据的权限
mysql&FLUSH PRIVILEGES;
解决Mysql无法远程连接的问题
1、Mysql的端口是否正确
通过netstat
-ntlp查看端口占用情况,一般情况下端口是3306。在用工具连接MySQl是要用到端口。例如My Admin\My
Query Browser\MySQl Front等。
2、检查用户权限是否正确
mysql库的user表里有两条记录:host分别为localhost和%(为了安全,%可以换成你需要外部连接的IP)。
3、查看/etc/f中,skip-networking 是否已被注掉
报错:ERROR 2003 (HY000): Can't connect to MySQL server on
'192.168.51.112' (111)
sudo gedit
#skip-external-locking
#bind-address = 127.0.0.1
skip-name-resolve
4、查看iptables是否停掉,没关的情况下,无法连接
通过:service iptables stop临时关闭。
报错:ERROR 2003 (HY000): Can't connect to MySQL server on
'192.168.51.112' (113)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。解决远程连接mysql错误1130代码的方法
今天在用远程连接Mysql服务器的数据库,不管怎么弄都是连接不到,错误代码是1130,ERROR 1130: Host 192.168.2.159 is not allowed to connect to this MySQL server&
猜想是无法给远程连接的用户权限问题。结果这样子操作mysql库,即可解决。在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'。。
mysql -u root -p
mysql&select 'host' from user where user='root';
mysql&update user set host = '%' where user ='root';
mysql&select 'host'&& from user where user='root';
第一句是以权限用户root登录
第二句:选择mysql库
第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
第五句:刷新MySQL的系统权限相关表
第六句:再重新查看user表时,有修改。。
重起mysql服务即可完成。
==============================================================
& &&本机的mysql数据库中有两条user='root'的记录,将其中一条host='localhost'的host修改为'%'后,虽然可以通过远程访问数据库了,但是使用localhost或者127.0.0.1又无法访问数据库了。
& & 经过一番折腾,发现可以通过创建用户的方法来解决这个问题。不需要修改user表中的任何数据,在本地用root登陆mysql后,执行下面的语句,创建用户名为'root',密码为'123456'的用户。执行完以后,查看user表,发现新增了一条host='%',user='root'的记录,并且各项权限与其它'root'一样,再次使用192.168.1.13进行访问,发现可以正常访问了。
to root identified by '123456'
如果访问还有问题,可以执行一下
有用就好。
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区当前位置: →
→ 求解:为啥远程无法访问数据库
求解:为啥远程无法访问数据库
& 作者:佚名 & 来源: 互联网 & 热度:
&收藏到→_→:
摘要: 求解:为什么远程无法访问数据库?平台:客户端在市中心的办公楼上,使用xp sp3系统,服务器在郊区,使用xp sp2,数据库为mys...
"求解:为啥远程无法访问数据库"::
求解:为什么远程无法访问?平台:客户端在市中心的办公楼上,使用xp sp3系统,服务器在郊区,使用xp sp2,为; &
服务器为双ip,一端通过本地的交换机,连接到办公楼的交换机后与客户端连接,ip为10.179.170.60,另一端连接实验区,ip为192.168.1.22。 &
当通过本地的交换机与服务器连接测试时,可以连接访问,说明能够,但在办公室客户端里却不能访问,不知道是为什么??客户端与服务器的ip能够ping通,且中间的防火墙已经关闭。------解决方案--------------------用命令行工具试一下,贴出错误信息以供分析。参考下贴中的检查方法并贴出你的检查结果(#43楼)http://topic.马开东/u//14d4f597-b7d4-4c24-b0db-abb.html[收集]
无法联接故障现象及原因
------解决方案--------------------远程需要局域网或者同属于一个网关才可以吧&
&如果都不属于
那就只能用来控制&
win7自带了一个的软件 此文来自: 马开东博客
转载请注明出处 网址:
你试试看行不行
------解决方案--------------------9、给msyql创建登录用户和权限。1)本地登入,更改 && 里的 &user& 表里的 &host& 项,将&localhost&改为&%& -u root -p&&update user set host = '%' where user = 'root';&&select host,2)直接授权,例如,你想root使用mypassword从任何主机连接到服务器的话(也可将%更换为ip,指定为某一台远程主机):& grant all privileges on *.* to 'root'@'%' identified by '12345'&
------解决方案--------------------安装一个vnc 看能不能远程监控,这样测试不就啥都清楚了
------解决方案--------------------
远程监控桌面。。。或者在办公室打开服务器端 的网页看行不行。。。 搜索此文相关文章:此文来自: 马开东博客
网址: 站长QQ
上一篇:没有了
求解:为啥远程无法访问数据库_MySQL相关文章
MySQL_总排行榜
MySQL_最新
MySQL_月排行榜
MySQL_周排行榜
MySQL_日排行榜

我要回帖

更多关于 mysql数据库备份 的文章

 

随机推荐