工作完了以后,回家发现mysql无法登陆了,中午才改完远程连接可以拿navicsat连接呢,晚上回家就连不上了,真是奇了怪。
开启远程的方法
update user set host='%' where user='root';
flush privileges;
- 1
发现原因
- 用远程连接上去后发现表中的root对应的host确实是%,而且还有一个127.0.0.1,那么不应该连接不上呀。
- 但是下面还有一个localhost是空白的,难道localhost和127.0.0.1不一样?百度搜索了一翻,还真不一样,试了下,神了~
- 理由是在linux中,如果直接使用命令行登陆mysql,不算TCP/IP协议,所以用不上127.0.0.1,采用的是 unix domain socket连接。
解决问题
- 查了大概三种方法,第一种方法,丢弃掉localhost用户就好。
drop user ''@localhost; flush privileges;
- 1
- 2
- 第二个方法在my.cnf的[mysql]区段里添加
protocol=tcp
- 1
- 第三个方法给localhost用户分配权限及添加密码即可。我用的就是第三种方法。
mysql> grant all privileges on *.* to root@'localhost' identified by 'cisco'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
- 1
- 2
- 3
- 最后退出重新进入就可以了。