mysql远程登陆和本地登陆的一些问题

远程访问

mysql不允许远程用户访问主机服务器 1130 
安装完之后成 使用 mysql admin连接报错 
ERROR 1130: Host ***.***.***.*** is not allowed to connect to this MySQL server 
以下百度查到的,试过可以 
说明所连接的用户帐号没有远程连接的权限,只能在本机(localhost)登录。 
需更改 mysql 数据库里的 user表里的 host项 
把localhost改称% 
具体步骤:登陆到mysql 
首先 use mysql; 
按照别人提供的方式update的时候,出现错误。 
mysql> update user set host='%' where user = 'root'; 
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 
然后查看了下数据库的host信息如下: 
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 administrator连接...成功!!!

 

本地访问

[root@localhost mysql]# mysql -u root -p

Enter password:

ERROR 1045 (28000): Access denied for user 'root'@'localhost'(using password: YES)

 

这个问题,网上找了很多,但是都不是我的情况,我的root密码是正确的,也通过/etc/my.cnf下的[mysqld]中,末尾添加skip-grant-tables,先取消账号验证,然后进入mysql进行修改密码

update user set password=PASSWORD("123456") whereuser='root';

进行了密码修改,再次尝试也不行。

 

归根结底不是因为的账号密码的问题,而是我之前通过打开了远程登录的,不知道造成了什么样的影响,我查看了hostname是localhost.localdomain,查看了/ect/hosts文件中,

127.0.0.1   localhostlocalhost.localdomain localhost4 localhost4.localdomain4

这也是对的,

再次进入mysql的user表中,查看root用户的host到底是什么,

+-----------------------+------+

| host                  |user |

+-----------------------+------+

| %                     |root |

| 127.0.0.1             |root |

| ::1                   |root |

| localhost.localdomain | root |

+-----------------------+------+

 

 

在这里却没有发现有localhost,只有localhost.localdomain,但是我在终端显示的登录是[root@localhostmysql]#,这里显示的host是localhost,难怪使用mysql–u root –p的时候登录不了,因为使用-hIP的话是采用本地host进行登录的,而user表中没有的对应项,所以出现了错误,我尝试用

mysql –u root –p –h 127.0.0.1进行登录,因为127.0.0.1是在user表中存在的,果然,登录成功了。

 

找到原因之后,这接下去就是在user表中添加root的localhost就可以了,参照网上的代码,

http://blog.itpub.net/15480802/viewspace-687057/

insert into user(host,user,password)values('%','root',password('my_passsword'));

但是在这里我又遇到了错误

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a defaultvalue,

看网上的意思,就是要修改my.cnf中的配置,但是我采用了第二种办法,

 grant all privileges on *.* to root@"localhost";

+-----------------------+------+

| host                  |user |

+-----------------------+------+

| %                     |root |

| 127.0.0.1             |root |

| ::1                   |root |

| localhost            | root |

| localhost.localdomain | root |

+-----------------------+------+

添加进去了,但是在用localhost进行登录的时候,又发现了,当初在插入这个host的时候,没有对root用户进行指定密码,所以不用密码就可以进入了,但是这个不是我希望的,

mysql> update user set password=password("password")where user='root';

mysql> flush privileges;

其实可以在插入host的时候,直接加上密码项就可以了,网上的那个语句不是很完整,改进之后

 grant all privileges on *.* to root@"localhost" identified by ‘password′

 

http://www.3lian.com/edu/2013/08-10/88447.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值