Linux --- CentOS 7 搭建Mariadb数据库服务器与配置详解

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';

注意:

  1. username@’%’ ,% 代表允许所有IP的username登录

  2. username@localhost,localhost 代表允许本地username登录

  3. [email protected],127.0.0.1 可以设置为单个IP,即允许单个远程主机登录

  4. all privileges,代表所有权限

  5. 权限列表可被替换为一下任意组合:

    select,insert,update,delete,create,drop,

    index,alter,grant,references,reload,shutdown,process,file

查询用户权限列表

  • 切换至 Mysql 数据库
use mysql
  • 查询权限列表
SELECT User, Host FROM user;

4、问题集锦

(一) 忘记密码 ?

  1. 停止 MariaDB 服务
systemctl stop mariadb.service
  1. 以不检查权限的方式重新启动 MariaDB
mysqld_safe --skip-grant-tables &
  1. 修改 MariaDB 密码
mysql -u root
update mysql.user set password=PASSWORD('newpassword') where User='root’;
flush privileges;
  1. 重新启动 MariaDB
systemctl start mariadb.service

总结


参考

你可能感兴趣的:(Linux)