• Navicat连接虚拟机上的mysql


    • 刚刚在虚拟主机上安装mysql,  想使用Navicat 操作mysql.  但是连接不上
      报错:  2003 - can't connect to MySQL server on '192.168.1.108'(10038)

      使用apt-get安装的mysql, 没有修改任何配置. 在虚拟机里 查看数据库, 

      use mysql;  # mysql库里有一个user表
      show tables;
      select user,host from user;
      # 看到root那一行记录 root对应的host是localhost, 也就是不能远程登录的意思. 需要将其修改成%.
      update user set host='%' where user='root'; #表示允许远程其他用户登录

      还有一种方法(没有尝试):  grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option;   #也是修改登录权限,这个和修改表任选其一

    • 设置完user表还是不行,  继续
      netstat -apn | grep 3306  #显示的如果是127.0.0.1:3306那么就注释/etc/mysql/mysql.conf.d/mysqld.cnf 中的bind-address 127.0.0.1

      注释完成后重启mysql.

      #重启mysql (Ubuntu系统)
      /etc/init.d/mysql  restart

         再使用netstat  -apn | grep 3306 查看 如果显示的是 :::3306 就OK了    连接成功!!!

    • flush  privileges  #刷新权限, 有的时候可能需要刷新一下,
    • 上面的是在Windows的Ubuntu虚拟机上操作的, 在服务器上操作的时候发现略有不同, 记录一下. 在服务器上创建新的用户的时候, 如果想要修改user表, 不需要修改mysqld.cnf文件, 在修改user 表之后, 重启mysql 即可生效.不用注释掉这一行了。因为这里不是绑定127.0.0.1,如果绑定127.0.0.1,那就注释掉。
    • 如果新买的阿里云服务器,安装mysql之后,在服务器上能访问,Navicat链接不上,并且已经按照上面的步骤修改了user表和配置文件mysqld.cnf等,还是不能访问,原因是没有开放3306端口。
    • 注意:如果user表中同一个用户名有多个行,比如说root 账户,有两行,一行是host 为localhost   另一行 host 为% , 这个时候如果你在其他电脑登录mysql 的 root 账号发现登录不上去,是因为mysql读取多个账号的时候,判断user,host是有顺序的。%排在localhost 的后面,所以判断结果还是localhost,只能本机登录。解决办法:可以临时修改user表的host为你当前使用的电脑IP,实现永久的在其他电脑登录mysql , 那就把localhost那个记录从user表删除。
    •  访问控制-连接验证官方文档:https://dev.mysql.com/doc/refman/8.0/en/connection-access.html

  • 相关阅读:
    2-SAT( tarjan应用 )
    字节流和字符流
    linux 安装kafka
    网络编程入门
    Java代码中的魔法值
    动态SQL
    update语句的返回值是什么
    dual表
    diy diy diy台式机走起
    js数组赋值,改变其中一个,另一个数组也会改变(vue中数据绑定)
  • 原文地址:https://www.cnblogs.com/bneglect/p/11475146.html
Copyright © 2020-2023  润新知