用navicat连接本地的MySQL数据库,发现用localhost连接可以连得上,但是用IP却连不上。
解决方法:
grant all privileges on *.* to 'root'@'%' identified by 'root'; //所有IP下root用户可以访问,密码为root
flush privileges;
重启服务,连接,大功告成。
---------------下面是解决这个问题的乱七八糟的思路,记录给自己看的----------------------一、默认用户名root密码为空,用IP连的话失败。首先考虑到的是没给root设置密码。
1、用wamp自带的MySQL控制台登录,密码为空,直接回车。
set password for root@localhost = password('123456'); //将密码改为123456,PASSWORD为密码加密函数
flush privileges;//重新加载权限表;
2、修改“D:\wamp\apps\phpmyadmin4.1.14\config.inc.php”文件。
将非自动登录模式切换至自动登录模式,设置用户名密码。
//$cfg['Servers'][$i]['auth_type'] = 'cookie';//非自动登录
$cfg['Servers'][$i]['auth_type'] = 'config';//自动登录
$cfg['Servers'][$i]['user'] = 'root';
//$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['password'] = '123456';
虽然经过验证这部分操作对于用Navicat连MySQL一点作用都没起,这部分影响的应该是网页连接数据库。不同模式的区别参考
http://www.360doc.com/content/15/0319/10/22355405_456363609.shtml
3、重启服务:
再次连接,没用。。。
二、可能是权限问题,应该给其他用户也赋访问权限才行。
grant all privileges on *.* to 'root'@'%' identified by 'root'; //所有IProot用户可以访问,密码为root
flush privileges;
重启服务,连接,大功告成。
MySQL> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。
三、遗留问题,应该还是用户权限导致的
1、设置root密码为“123456”后,直接连localhost密码为空可连,用123456连不上,为啥?2、用wamp自带的MySQL控制台登录时密码为123456,用root登录不可以,为啥?
答案整理在这里啦!
http://blog.csdn.net/miaowumi92/article/details/69802484