服务开启

使用 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

文章来源于互联网:mysql基础管理–服务启动/关闭、开启远程连接

发表评论