远程访问
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′