古老的榕树

让远程用户访问 MySQL 的步骤

发表 2016-09-17 12:19 阅读(2635)
为了安全,MySQL 数据库默认安装是不支持外网 ip 访问的,如果项目需要,可以配置外网 IP 访问,配置很很简单,只需两步完成配置。

以下的配置,可能会带来安全隐患,需要谨慎考虑。我的项目,由于采用了分布式的部署,服务器并不在一个内网段里,不得已只能开放外部访问了,同时我希望 MySQL 既能外部 IP 访问,也能 使用 127.0.0.1 、localhost 访问。以下就是具体步骤:

第一步,找到 MySQL 的配置文件,注释掉不允许外网访问的参数。
我的 MySQL 数据库配置文件位于 /etc/mysql/my.cnf

    nano /etc/mysql/my.cnf
    
找到以下参数,注释掉:

    bind-address   = 127.0.0.1
结果如下:

    #bind-address   = 127.0.0.1
    ctrl+o //保存
    ctrl+x //退出

第二步,新建外部访问用户,并授权访问。
在终端里,通过数据库的 root 用户进入 MySQL 控制台

mysql -u root -p
输入密码进入,登录后结果会看到

    Server version: 5.7.9 MySQL Community Server (GPL)

    Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql>

开始给一个用户授权了,在控制台里输入授权命令:

    mysql>GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' IDENTIFIED BY 'newpassword' WITH GRANT OPTION;
执行后,刷新一下

    mysql>FLUSH PRIVILEGES;
退出:

    mysql>quit;

授权说明:


    GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' IDENTIFIED BY 'newpassword' WITH GRANT OPTION;


GRANT命令说明:

ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等所有权限。
    ON 用来指定权限针对哪些库和表。
    *.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。
    TO 表示将权限赋予某个用户。
    % 表示用户允许所有的ip下都有效。
    newpassword 指定新的密码。
    
收回权限指令:

    mysql> revoke delete on *.* from 'newuser'@'%';

Donate

如果文章对您有帮助,请使用手机支付宝扫描二维码,捐赠X元,作者离不开读者的支持!