MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius主导开发,MariaDB名称来自Michael Widenius的女儿Maria的名字
使用yum安装MariaDB
yum install 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:
在上面的这步操作,如果遇到了如下问题:
$ 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