• ubuntu系统安装的MySql数据库,远程不能访问的几种可能问题


    安装MySQL数据库后一般会遇到远程计算机不能连接的问题,具体问题需要我们排查。

    可能一:MySql数据库是否提供了外部访问的用户以及权限?
    可能二:MySql的配置文件是否只绑定了本机ip(ubuntu下:/etc/mysql/mysql.conf.d/mysqld.cnf)?
    可能三:操作系统的防火墙不允许外部访问3306端口

    本文实例发生的环境是ubuntu16.04,MySql5.7。

    排查一:在安装了MySql数据库的计算机上,
    命令行进入mysql:mysql -u root -p
    并输入用户root的密码:

     执行语句:select user, host from user;

    如果是上述结果,则说明没有设定外部访问的用户,接下来我们给root用户赋予外部访问的权限,执行2条语句:
    grant all privileges on *.* to 'root'@'192.168.3.%' identified by 'password' with grant option;
    flush privileges;
    注意password是你给root设定的密码,注意拼写,一切ok后再次查看user表内的内容

     

    红框里的那条记录就是刚才我们用grant命令添加的,它的意思是局域网内192.168.3.0-192.68.3.255的ip主机都可以通过用户root和密码password来访问。

    这里解释一下grant语句格式
    mysql> grant 权限1,权限2,…权限n on 数据库名.表名 to 用户名@用户地址 identified by ‘用户密码’ with grant option;
    权限1,权限2,…代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等权限。
    如果是all privileges或者all,表示赋予用户全部权限。
    如果数据库名.表名被*.*代替,表示赋予该用户可以操作服务器上所有数据库所有表的权限。
    用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址。
    ‘用户密码’必须提供。
    最后的 with grant option 表示权限传递,意思是允许该用户将其权限分配给其他人。

    以上所有操作也可在图形界面完成,如果你的ubuntu上安装了MySql Workbench会很方便:

    排查二:配置文件是否只绑定了本机ip,使用gedit文本编辑器打开mysql的配置文件,把bind-address = 127.0.0.0这行注释掉(句首加上#),当然,也可以绑定你所需的主机,ubuntu终端执行:sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

    保存退出,ubuntu终端执行:service mysql restart,或者手动重启mysql,或者重启系统。
    另外,重启之后你可以使用 netstat -an|grep 3306 命令来查看端口情况:

    红框内是注释掉bind-address后才有的,未注释前没有。

    排查三:关于操作系统的防火墙不允许外部访问3306端口,请根据操作系统自行排查。


    END.

    ---------------------------------------------------
    如果这些内容能给读者带来帮助,那将是莫大欢喜。
    ---------------------------------------------------
  • 相关阅读:
    寻找回文数
    【C/C++语言入门篇】 位运算
    怎样判断输入是否结束
    命名那个数字
    Broken Necklace
    C#打造邮件接受器VS2005版
    C#应用程序打包时自动安装MSDE
    SQL6.5到2005发布的版本号搜集整理
    SQL无限分类存储过程整理2
    ASP.NET调用SWF代码文件
  • 原文地址:https://www.cnblogs.com/asdop/p/6093181.html
Copyright © 2020-2023  润新知