服务开启
使用 safe_mysqld 启动:sudo safe_mysqld &
服务关闭
mysqladmin shutdown
开启远程连接
1. 创建开启 MySQL 的远程登陆帐号
首先 需要有允许远程登录的账号,找到mysql数据库的user表。在user表中新建一条数据,设置User(username)和Host(开放访问MySQL的IP:例如123.118.17.201)以及登录密码。这样就设置了允许访问的用户名和IP地址(若想所有IP都可以访问,则可将Host设置为‘%’,但是这样很危险,一般不建议)。
通过grant命令创建
若想admin账户使用admin_password从任何主机连接到mysql服务器
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'admin_password' WITH GRANT OPTION;
若想仅允许用户admin从ip为235.97.20.51 的主机连接到mysql服务器,并使用admin_password作为密码
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'235.97.20.51' IDENTIFIED BY 'admin_password' WITH GRANT OPTION;
通过insert + update语句创建
刷新权限
修改完user表后执行 flush privileges
刷新权限。
2. 配置文件开启远程访问
mysql中的配置文件可能会限制远程访问,可以通过ss命令查看mysql的连接端口情况:
使用 ss -tlnp 命令查看网络接口开启状态
image.png
若如上图所示,或者没有开启3306端口。则mysql仅允许服务器本地访问。
打开 MySQL 配置文件 my.cnf(/etc/mysql/my.cnf)
找到
bind-address = 127.0.0.1
或者
skip-networking
直接注释掉,然后重启mysql。
skip-networking : 开启 skip-networking 选项可以彻底关闭MySQL的TCP/IP连接方式。
bind-address = 127.0.0.1 : 若bind-address=127.0.0.1则表示mysql实例只能被本机连接,若bind-address=0.0.0.0或者不设置,则mysql可以被远程访问
注意:mysql的启动配置文件可能在/etc/mysql/mysql.conf.d/mysqld.cnf中,请更改那里的bind参数
iptables防火墙设置
通过iptables可以更细粒度地实现控制哪些可以访问,哪些不可以访问
阻止外部访问mysql:
iptables -A INPUT -p tcp --dport 3306 -j DROP
允许某个ip(替换xxx.xxx.xxx.xxx)访问,但是拒绝其他ip的访问
iptables -A INPUT -p tcp --dport 3306 -s xxx.xxx.xxx.xxx -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
注意:需要在
DROP
前添加那个ACCEPT
命令
参考文章
https://blog.csdn.net/qq_16885135/article/details/53096451
https://www.a2hosting.com/kb/developer-corner/mysql/restricting-mysql-port-access
网友评论