MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。[4]
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。
1、安装 MariaDB
安装前检查准备
- 查看是否安装 MariaDB
rpm -qa|grep mariadb
- 查看是否安装MySQL
rpm -qa | grep mysql
- 如果有则卸载之
yum -y remove mysql
安装 MariaDB
- 切换至root权限
su - root
- 使用 yum 安装
yum -y install mariadb mariadb-server
- 安装完成,启动MariaDB
systemctl start mariadb
- 设置开机即启动MariaDB
systemctl enable mariadb
2、配置 MariaDB
首次启动 MariaDB 简单配置
- 启动安全配置向导
mysql_secure_installation
- 向导开始
Enter current password for root (enter for none): –>初次运行直接回车
Set root password? [Y/n] –>是否设置root用户密码,输入y并回车或直接回车
New password: –>设置root用户的密码
Re-enter new password: –>再输入一次你设置的密码
Remove anonymous users? [Y/n] –>是否删除匿名用户,回车
Disallow root login remotely? [Y/n] –>是否禁止root远程登录,回车,
Remove test database and access to it? [Y/n] –>是否删除test数据库,回车
Reload privilege tables now? [Y/n] –>是否重新加载权限表,回车
- 初始化MariaDB完成后,以mysql的root身份登录
mysql -uroot -p
配置 MariaDB 字符集
- 编辑文件 /etc/my.cnf
vim /etc/my.cnf
- 在 my.cnf 文件中的 [mysqld] 标签下添加如下内容
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
- 编辑文件 /etc/my.cnf.d/client.cnf
vim /etc/my.cnf.d/client.cnf
- 在 client.cnf 文件中的 [client] 标签下添加如下内容
default-character-set=utf8
- 编辑文件 /etc/my.cnf.d/mysql-clients.cnf
vi /etc/my.cnf.d/mysql-clients.cnf
- 在 mysql-clients.cnf 文件中的 [mysql] 添加如下内容
default-character-set=utf8
- 配置完成,重启mariadb
systemctl restart mariadb
- 登录 MariaDB 查看字符集是否设置成功
show variables like "%character%";show variables like "%collation%";
此时要想远程登录数据库,还需要先设置权限
3、配置用户权限
创建用户
- 创建本地登录用户
create user username@localhost identified by 'password';
- 创建用户时即赋予权限(允许远程访问)
# 允许用户名为`username`的用户从任意ip以密码为password访问所有数据库
grant all privileges on *.* to username@'%' identified by 'password';
注意:
username@’%’ ,% 代表允许所有IP的username登录
username@localhost,localhost 代表允许本地username登录
username@127.0.0.1,127.0.0.1 可以设置为单个IP,即允许单个远程主机登录
all privileges,代表所有权限
权限列表可被替换为一下任意组合:
select,insert,update,delete,create,drop,
index,alter,grant,references,reload,shutdown,process,file
查询用户权限列表
- 切换至 Mysql 数据库
use mysql
- 查询权限列表
SELECT User, Host FROM user;
4、问题集锦
(一) 忘记密码 ?
- 停止 MariaDB 服务
systemctl stop mariadb.service
- 以不检查权限的方式重新启动 MariaDB
mysqld_safe --skip-grant-tables &
- 修改 MariaDB 密码
mysql -u root
update mysql.user set password=PASSWORD('newpassword') where User='root’;
flush privileges;
- 重新启动 MariaDB
systemctl start mariadb.service