让远程用户访问 MySQL 的步骤
为了安全,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;
ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等所有权限。
ON 用来指定权限针对哪些库和表。
*.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。
TO 表示将权限赋予某个用户。
% 表示用户允许所有的ip下都有效。
newpassword 指定新的密码。
收回权限指令:
mysql> revoke delete on *.* from 'newuser'@'%';
以下的配置,可能会带来安全隐患,需要谨慎考虑。我的项目,由于采用了分布式的部署,服务器并不在一个内网段里,不得已只能开放外部访问了,同时我希望 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;
ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等所有权限。
ON 用来指定权限针对哪些库和表。
*.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。
TO 表示将权限赋予某个用户。
% 表示用户允许所有的ip下都有效。
newpassword 指定新的密码。
收回权限指令:
mysql> revoke delete on *.* from 'newuser'@'%';
哇~~~ 竟然还没有评论!