在Linux中安装MariaDB并添加远程访问
在Linux中安装MariaDB并添加远程访问
最近学习到了数据库部分,因为有一台台式机一台笔记本换着用,就没有把数据库安装在本机,本来打算用之前买的虚拟空间的数据库的,结果速度太慢用起来太难受了,就把闲置的香橙派(类似树莓派的卡片电脑,强烈不建议非刚需买这玩意儿,基本闲置吃灰)拿出来安个MariaDB远程访问,下面是安装的步骤
注1:我的是Debian系系统,如果你是RedHat系,把apt换成dnf或者yum就好
注2:所有命令均需要root权限
安装MariaDB
1、安装MariaDB
apt install mariadb-server
2、启动MariaDB
systemctl start mariadb
3、设置MariaDB开机自启
systemctl enable mariadb
4、执行初始化命令
mysql_secure_installation
初始化过程中会提示进行如下配置
# 输入原来的root密码,这里没有密码,直接回车就可以了
Enter current password for root (enter for none):
# 更改root密码?
Change the root password?
# 删除匿名用户?
Remove anonymous users?
# 禁用root远程登录? 注:我选了否,最后还是要自己配置
Disallow root login remotely?
# 是否删除test测试数据库?
Remove test database and access to it?
# 重新加载权限数据表
Reload privilege tables now?
配置完成后可以考虑重新启动一下MariaDB
systemctl restart mariadb
配置远程登录
MariaDB安装好后是默认不能通过远程连接的,需要做以下修改
1、修改地址绑定
编辑/etc/mysql/mariadb.conf.d/50-server.cnf
文件
将其中的
bind-address = 127.0.0.1
更改为需要放行的地址,如更改为0.0.0.0则接受所有IP地址的连接请求
bind-address = 0.0.0.0
2、添加支持远程登录的用户
我们可以先查询以下
use mysql;
select host,user from user;
在我安装之后,只能看到一个本地root用户
host | user |
---|---|
localhost | root |
所以要添加一个远程登录的用户,因为是自己用,我就直接添加了一个授予所有权限的用户,如果是生产环境,慎重!!!
-- 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
--示例1,允许所有从任意地址登录的用户: create user 'ActionNet'@'%' identified by 'zxc123';
--示例2,允许从192.168.199.100登录的用户: create user 'ActionNet'@'192.168.199.100' identified by 'zxc123';
-- 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
-- 示例:授予任意地址登录ActionNet用户所有数据库所有权限
GRANT ALL ON *.* TO 'ActionNet'@'%';
最近遇到了添加了远程账户还是无法登录的情况,具体为Access denied for user 'root'@'localhost'
这时候可以看看对应用户的plugin是不是mysql_native_password
,因为这个才代表密码登录
select user,host,plugin from user;
User | Host | plugin |
---|---|---|
root | localhost | mysql_native_password |
如果plugin不是这个,可以自己修改一下,正常修改表数据的SQL,就不写了
配置防火墙
之前因为我没有开防火墙,所以没想过会有这方面的问题,现在加上
# firewall
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --add-port=3306/tcp
# iptables
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
添加完防火墙记得重启一下