zoukankan      html  css  js  c++  java
  • Linux mysql开启远程访问

    默认情况下远程访问会出现 Can’t connect to MySQL server on ‘192.168.10.18′ (10061) 错误


    是因为,mysql的默认配置为了增强安全性,禁止了非本机的访问,在ubuntu中是这样,debian中也是。禁止的方式以前是在my.cnf中有一句
    skip-network
    现在则变成了:
    # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. 

    bind-address = 127.0.0.1 是只监听本机地址。所以,如果要开放局域网内的访问,需要注释掉这一句,或者改成: bind-address = 0.0.0.0    

    1)修改 bind-address = 127.0.0.1  为  bind-address = 0.0.0.0

    # vim /etc/mysql/my.cnf


    2)修改完成后重启mysql服务

    # sudo /etc/init.d/mysql restart


    这样改完3306端口就开始监听了,但是mysql的权限还没有打开root远程登陆。mysql默认是不允许远程连接的,因为有很大的安全隐患。
    需要手动增加可以远程访问数据库的用户。

    3)本地登入mysql,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,将"localhost"改为"%"

    #mysql -uroot -ppassword 
    mysql>use mysql;
    mysql>update user set host = '%' where user = 'root';
    mysql>select host, user from user;
    mysql>FLUSH PRIVILEGES;

    注:红色部分改为自己的用户名密码


    修改完这些就可以远程访问了。

    补充:

    今天按照这个方法遇到了点问题补充一下
    MySQL> update user set host='%' where user = 'root';
    ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
    然后查看了下数据库的host信息如下:
    MySQL> select host from user where user = 'root';
    +-----------------------+
    | host |
    +-----------------------+
    | % |
    | 127.0.0.1 |
    | localhost.localdomain |
    +-----------------------+
    3 rows in set (0.00 sec)
    host已经有了%这个值,所以直接运行命令:
    复制代码 代码如下:


    MySQL>flush privileges;


    再用MySQL administrator连接...成功!!
  • 相关阅读:
    超强、超详细Redis数据库入门教程
    性能测试学习线路图(建议)
    性能测试分析软件汇总–开源、商业全部收集
    基于Locust、Tsung的百万并发秒杀压测案例[转]
    brew update失败提示:/System/Library/Frameworks/Ruby.framework/。。。解决方法
    XML特殊符号
    tsuang简易教程-MAC版
    【转】SQL Server获取日期或时间
    autoIT 传参数含引号
    Autoit 脚本以及 Java 调用
  • 原文地址:https://www.cnblogs.com/haxianhe/p/9271089.html
Copyright © 2011-2022 走看看