在Linux服务器上安装了MariaDB,默认情况下,只允许本机访问。在某些特殊的情况下,要允许外部访问。具体操作流程如下:
1 修改服务器配置
bash
vi /etc/my.cnf.d/server.cnf
取消下面的注释,以便允许外来的主机访问。
bash
bind-address=0.0.0.0
2 重启数据库
bash
systemctl restart mysql
3 创建数据库登录用户
登录数据库
bash
mysql -u root -p
创建用户
bash
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'remote_password';
设置密码的时候,建议在键盘上乱敲,不要有啥规律,然后记下来。
开启访问数据库的权限
bash
GRANT SELECT ON my_database.* TO 'remote_user'@'%';
刷新权限
bash
FLUSH PRIVILEGES;
退出数据库
bash
exit;
4 设置防火墙
检查防火墙
bash
sudo firewall-cmd --list-all
添加策略
bash
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.10.0.0/16" port port=3306 protocol=tcp accept'
重新加载策略
bash
sudo firewall-cmd --reload
5 备注
这里在数据库上为remote_user设置了比较大的可访问IP范围,在防火墙上设置了比较小的范围。最终以比较小的范围为准。
如果追求完美的话,可以在数据库上为remote_user设置同样小的范围。修改方法如下:
登录数据库
bash
mysql -u root -p
撤销之前的权限
bash
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'remote_user'@'%';
重新设置权限
bash
GRANT SELECT ON my_database.* TO 'remote_user'@'10.10.0.0/16';
刷新权限
bash
FLUSH PRIVILEGES;
退出数据库
bash
exit;
测试
远程登录
bash
mysql -h 202.1.12.2 -u remote_user -p -P 3306
问题
备份的问题
bash
2024/12/18 16:21:41
[Error] Failed to backup "my_database" database with "Full" backup type: mysqldump:
[Warning] Using a password on the command line interface can be insecure.
mysqldump: Couldn't execute 'show create table `vw_reservation`':
SHOW VIEW command denied to user 'remote_user'@'202.11.1.15' for table 'vw_reservation' (1142)
解决办法:
给予用户vw_reservation视图的"读"的权限
bash
show full tables;
GRANT SHOW VIEW ON leo_spa.vw_reservation TO 'remote_user'@'%';
FLUSH PRIVILEGES;