在linux上安装并初始化配置MariaDB支持远程登录
- 一、环境准备
- 二、启动MariaDB
- 三、初始化MariaDB
- 四、配置远程访问
- 五、补充一些额外的MySql用户赋权限的语句
一、环境准备
本文环境是Redhat7上自带的MariaDB, 在安装redhat系统时已经自动安装好了,如果需要自行安装的话,可以到MariaDB官方网站获取安装方式。
MariaDB官方网站点此进入
点击Download按钮进入下载页
根据自己的需要选择安装方式,这里以Repo安装为例, 大体步骤就是选择对应的版本,配置镜像源,最后使用yum安装即可:
二、启动MariaDB
安装完成后,使用root账号启动MariaDB
[root@192 ~]# systemctl start mariadb
尝试连接服务器,看是否启动成功, 然后exit退出
[root@192 ~]# mysql
三、初始化MariaDB
我们可以先看下mysql相关的命令, 它们位于/bin目录下
[root@192 ~]# ll /bin/ | grep mysql
我们使用mysql_secure_installation来完成初始化, 根据交互提示一步步操作即可
此时,切换回普通用户,尝试连接数据库,可以看到已经可以访问了。
[hubing@192 ~]$ mysql -hlocalhost -uroot -p -P3306
四、配置远程访问
严格来讲,出于安全考虑,root账号只能在服务器上使用,不允许通过网络进行远程登录。所以本节的内容并不是必须的。只是做一下示范,对于其他的非root用户,是允许远程访问的,那么便可以依葫芦画瓢进行配置。
在上面的初始化过程中,我们虽然没有禁止远程使用MariaDB的root账号访问数据库,但实际上此时我们远程访问确实是访问不了的。
尝试远程使用数据库root账号登录数据库服务器192.168.233.129失败, 提示:
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.233.129:3306' (10060)
我们可以ping通数据库服务器,只是无法连接,说明还有某些安全策略禁止了我们的访问。
我们还切换到数据库服务器192.168.233.129上进行操作。
先登录上数据库:
[hubing@192 ~]$ mysql -hlocalhost -uroot -p -P3306
然后切换到mysql db
MariaDB [(none)]> use mysql;
查表获取当前的配置信息:
MariaDB [mysql]> select host, user from user;
可以看到这里并没有允许远程连接,需要授权root用户的所有权限并设置远程访问。
依次执行:
//任何远程主机都可以使用root账号访问数据库
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root密码';
//刷新以便立即生效
FLUSH PRIVILEGES;
如果防火墙没开放3306端口的话,还需要通过root用户将3306端口配置为防火墙例外。
[root@192 ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@192 ~]# firewall-cmd --reload
[root@192 ~]# firewall-cmd --list-ports
此时再次尝试远程登录数据库,已经可以成功进行登录了。
五、补充一些额外的MySql用户赋权限的语句
-- 说明
-- {user} 替换为实际的用户名
-- {passwd} 替换为实际的用户密码
-- {otherUser} 替换为其他用户的用户名
-- {otherPasswd} 替换为其他用户的密码
GRANT ALL ON {user}.* TO '{user}'@'%' IDENTIFIED BY '{passwd}';
GRANT ALL ON {user}.* TO '{user}'@'127.0.0.1' IDENTIFIED BY '{passwd}';
GRANT ALL ON {user}.* TO '{user}'@'localhost' IDENTIFIED BY '{passwd}';
GRANT SELECT ON mysql.* TO '{user}'@'%' IDENTIFIED BY '{passwd}';
GRANT PROCESS,FILE,SUPER,REPLICATION CLIENT,REPLICATION SLAVE ON *.* to '{user}'@'%' IDENTIFIED BY '{passwd}';
GRANT PROCESS,FILE,SUPER,REPLICATION CLIENT,REPLICATION SLAVE ON *.* to '{user}'@'127.0.0.1' IDENTIFIED BY '{passwd}';
GRANT PROCESS,FILE,SUPER,REPLICATION CLIENT,REPLICATION SLAVE ON *.* to '{user}'@'localhost' IDENTIFIED BY '{passwd}';
-- 将本库的部分权限赋予其他用户,复制以下语句,对其他用户进行赋权,包括各个分库和查询库
GRANT SELECT ON {user}.* to '{otherUser}'@'%' IDENTIFIED BY '{otherPasswd}';
GRANT SELECT ON {user}.* to '{otherUser}'@'127.0.0.1' IDENTIFIED BY '{otherPasswd}';
GRANT SELECT ON {user}.* to '{otherUser}'@'localhost' IDENTIFIED BY '{otherPasswd}';