navicat for mysql连接本地数据库

时间:2024-03-07 20:58:38

      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