CentOS7下MariaDB安装及配置

前言

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius主导开发,MariaDB名称来自Michael Widenius的女儿Maria的名字

Linux安装MariaDB

安装

使用yum安装MariaDB

yum install mariadb*

CentOS7下MariaDB安装及配置_第1张图片
安装完成MariaDB,首先启动MariaDB

systemctl start mariadb

设置开机启动

systemctl enable 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 -u root -p 
Enter password:

ERROR 1698 (28000): Access denied for user ‘root’@‘localhost’

在上面的这步操作,如果遇到了如下问题:

$ mysql_secure_installation

Enter current password for root (enter for none):
ERROR 1698 (28000): Access denied for user ‘root’@‘localhost’

参考:mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法

安装时并没有设置密码,但是需要让输入密码,直接回车也不行,可能密码为空,但是无法进入 MariaDB。

需要修改 /etc/my.cnf.d/server.cnf 配置文件(MariaDB新版和MySQL可能不一样):

sudo vim /etc/my.cnf.d/server.cnf

找到 [mysqld] 后面添加一个,可以让你不用登录密码进入 MariaDB:

skip-grant-tables

保存:wq,退出,重启 MariaDB:

systemctl restart mariadb

注:在使用VIM时,有时需要把VIM中的内容复制到其他程序中,在normal mode下,按住 shift 键,使用鼠标选择,右击鼠标键,菜单中就出现了copy选择。

这时候直接使用 mysql -u root -p 敲回车就能进入 MariaDB,不需要输入密码了,现在分别执行下面三句话:

use mysql;
# update user set authentication_string=password("newpassward") where user="root";
# 新版MariaDB和MySQL此语句报错:ERROR 1348 (HY000): Column 'authentication_string' is not updatable
# 用下面的:
SELECT User, Host FROM mysql.user;
flush privileges;
ALTER user 'root'@'localhost' IDENTIFIED BY 'newpassward';	 # newpassward 新密码

flush privileges;

密码和用户名就在上面的双引号之间输入就可以了,不能删掉。

在进入 /etc/my.cnf.d/server.cnf 中将 skip-grant-tables 注释掉即可,前面加 # 为注释。在返回终端输入 mysql -u root -p,应该可以进入数据库了。

如果还是报错,再将上面的 skip-grant-tables 注释去掉重新生效,按照上面的步骤重新免密码进入 MariaDB,输入:

use mysql;
select user, plugin from user;

执行后,错误是因为 plugin root 的字段是 auth_socket,那我们改掉它,替换为 mysql_native_password 就行了。输入:

update user set authentication_string=password("yourpasswd"),plugin='mysql_native_password' where user='root';

然后回车执行以下,再输入 select user,plugin from user; 回车,我们能看到 root 用户的字段改成功了。

然后再注释掉上面的 skip-grant-tables 再重启就好了。MySQL新版本可能不一样,而且不同系统可能也可能有区别。

现在 MariaDB 的 root 密码设置没什么问题了。

配置字符集

配置MariaDB的字符集,文件/etc/my.cnf

vi /etc/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

vi /etc/my.cnf.d/client.cnf

[client]中添加

default-character-set=utf8

文件/etc/my.cnf.d/mysql-clients.cnf

vi /etc/my.cnf.d/mysql-clients.cnf

[mysql]中添加

default-character-set=utf8

全部配置完成,重启mariadb

systemctl restart mariadb

之后进入MariaDB查看字符集

mysql> show variables like "%character%";show variables like "%collation%";

显示为

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client    | utf8                      |
| character_set_connection | utf8                      |
| character_set_database  | utf8                      |
| character_set_filesystem | binary                    |
| character_set_results    | utf8                      |
| character_set_server    | utf8                      |
| character_set_system    | utf8                      |
| character_sets_dir      | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-----------------+
| Variable_name        | Value          |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database  | utf8_unicode_ci |
| collation_server    | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

字符集配置完成。

添加用户,设置权限

创建用户命令(password 是要设置的密码)

mysql>create user username@'localhost' identified by 'password';

直接创建用户并授予本地登录权限

mysql>grant all privileges on *.* to CodePeak@'localhost' identified by '123456';

授予外网登录权限

mysql>grant all privileges on *.* to username@'%' identified by 'password';

授予权限并且可以授权

mysql>grant all privileges on *.* to username@'hostname' identified by 'password' with grant option;

查看用户

mysql>SELECT User, Host FROM mysql.user;

删除某个用户

mysql>DROP USER username@'localhost'

简单的用户和权限配置基本就这样了。

其中只授予部分权限把其中all privileges或者all改为select, insert, update, delete, create, drop, index, alter, grant, references, reload, shutdown, process, file其中一部分。

参考文章:

Linux系统教程:如何检查MariaDB服务端版本

MariaDB Proxy读写分离的实现

Linux下编译安装配置MariaDB数据库的方法

CentOS系统使用yum安装MariaDB数据库

安装MariaDB与MySQL并存

Ubuntu 上如何将 MySQL 5.5 数据库迁移到 MariaDB 10

[翻译]Ubuntu 14.04 (Trusty) Server 安装 MariaDB

你可能感兴趣的:(数据库,数据库)