navicat for mysql连接本地数据库
打算使用navicat连接本地数据库,连接的时候,一直连接不上。然后猜想是不是本地数据库没有设置好。输入mysql,出错内容:access denied for user root @localhost 。查阅了一波资料,大概意思是用户root没有使用密码访问localhost主机时被拒绝。(数据库默认账号密码是root ""空字符串)
解决的办法:
第一步: 编辑mysql配置文件my.ini ,在[mysqld]这个条目下加入 skip-grant-tables 保存退出后重启mysql。那如何知道我们的这个配置文件的位置呢,操作如下:运行,输入 services.msc 然后在打开的"服务管理器"中找到mysql并双击,会弹出来个属性框框,"常规"选项卡里面有个"执行路径",从这个路径你就可以看到它的bin目录在哪,以及这个my.ini文件的位置了。还有通过这个步骤,我们发现服务的名称为“MYSQL57”, 所以启动和关闭服务,应该使用 net start mysql57 以及 net stop mysql57 (网上一遍都是net start mysql),我们要根据实际名称运行。
第二步:这时候在cmd里面输入mysql -u root -p就可以不用密码登录了,出现 password:的时候直接回车可以进入,不会出现ERROR 1045 (28000),但很多操作都会受限制,因为我们不能grant(没有权限)。
第三步: 进入mysql数据库, mysql> use mysql; Database changed
第四步: 网上很多是给root用户设置新密码,是使用update user set password=password("新密码") where user="root"; 会报错Unknown column 'password' in 'field list。
查找资料,原来是mysql数据库下已经没有password这个字段了,password字段改成了authentication_string 。因此终端输入 mysql 直接登录MySQL数据库,然后use mysql,接着update mysql.user set authentication_string=password('密码名称') where user='root'这样密码就设置好了。
第五步: .刷新数据库 flush privileges;
第六步: 退出mysql ,输入quit; 然后再修改一下my.ini这个文件,把我们刚才加入的 "skip-grant-tables"这行删除,保存退出再重启mysql就可以了。
第七步: 输入mysql -uroot -p 回车, 输入我们设置好的密码。进入就可以开始快乐的玩耍了。
补充一些常用语句: show databases; (注意后面的分号一定要,否则不执行) 显示所有的数据库
use <数据库名> 使用这个数据库 ,然后屏幕会显示Database changed .
如果我们想使用其他数据库,直接use 数据库名称,就可以使用其他数据库了,也很方便。
参考文献: https://blog.csdn.net/better_space/article/details/53523353