> CentOS 7 自带的 MariaDB 安装源版本太低?如何在 CentOS7 上安装最新版的 MariaDB 数据库,以及安装后的字符编码设置,解决中文乱码问题。
MariaDB 与 MySQL
MariaDB 不仅仅是 MySQL 的一个替代品,它的主要目的是创新和提高 MySQL 的技术。开源,完全免费。
CentOS 6 或早期的版本中提供的是 MySQL 的服务器/客户端安装包,但 CentOS 7 已使用了 MariaDB 替代了默认的 MySQL。MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可 MariaDB 的目的是完全兼容 MySQL,包括 API 和命令行,使之能轻松成为 MySQL 的代替品。
Linux 下安装 MariaDB 官方文档参见:https://mariadb.com/resources/blog/installing-mariadb-10-on-centos-7-rhel-7/
安装 MariaDB 最新版本
删除原有的软件包
- 使用搜索 MariaDB 现有的包,一般会搜到 mariadb-libs-5.5.60-1.el7_5.x86_64
rpm -qa | grep mariadb
- 如果存在,使用全部删除
rpm -e --nodeps mariadb-* //或者 rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
配置 yum 源
-
使用源配置向导
https://downloads.mariadb.org/mariadb/repositories
可以选择合适的操作系统和想要安装的 MariaDB 版本,然后自动生成源配置。 -
配置 yum 源
cd /etc/yum.repos.d/ vim MariaDB.repo
将上面红框中的内容复制进去,保存退出。
安装 MariaDB
-
安装
yum install MariaDB-server MariaDB-client
如果出现了" MariaDB can’t be installed because of conflict with mariadb-libs-xxxx ",则需要先卸载当前安装的版本:
yum remove mariadb-libs*
安装完成后,会提示你为 root 设置密码,此时需要先运行 MariaDB。
运行 MariaDBservice mysql start
输出:
Starting mysql (via systemctl): [ OK ]
-
初始配置 MariaDB
mysql_secure_installation
如果出现
error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2 "No such file or directory")'
,则说明 MariaDB 没有启动,需要先运行 MariaDB,参考第 4 步。Enter current password for root (enter for none): //输入当前的root密码(默认空),直接回车 Set root password? [Y/n] //设置新密码,y Remove anonymous users? [Y/n] //移除匿名用户,y Disallow root login remotely? [Y/n] //禁止root用户远程登录,y Remove test database and access to it? [Y/n] //移除测试数据库,y Reload privilege tables now? [Y/n] //重新加载特权表,y
-
常用命令
systemctl start mariadb #启动服务 systemctl enable mariadb #设置开机启动 systemctl restart mariadb #重新启动 systemctl stop mariadb.service #停止MariaDB //进入数据库(本地登陆不需输入账号密码,默认root) mysql //若需要账号密码 mysql -u root -p
MariaDB 修改默认字符编码
进入 MariaDB 查看默认字符集
show variables like "%character%";
show variables like "%collation%";
如图,需要将红框中的内容改为 utf-8。
修改配置文件
查看 /etc/my.cnf 文件内容,其中包含一句 !includedir /etc/my.cnf.d
,说明在该配置文件中引入 /etc/my.cnf.d 目录下的配置文件。
-
编辑 /etc/my.cnf.d 目录下的 server.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 目录下无 server.cnf 文件,则直接在 /etc/my.cnf 文件的 [mysqld] 标签下添加以上内容。
-
在 /etc/my.cnf.d/client.cnf (没有就跳过)文件中的 [client] 中添加:
default-character-set=utf8
-
在文件 /etc/my.cnf.d/mysql-clients.cnf 中的 [mysql] 中添加:
default-character-set=utf8
-
全部配置完成,重启 MariaDB
systemctl restart mariadb
-
进入 MariaDB 查看字符集
show variables like "%character%"; show variables like "%collation%";
显示为
字符集配置完成。
测试
设置完成后可一创建一张表测试一下
create database test;
use test;
create table t1(id int primary key, name varchar(10));
show create table t1;
结果如下图,说明设置正确
注意:已经创建的表的编码并不会被修改,设置只对之后创建的表有用
- 本文作者: ieien
- 作者博客: ieienPark
- 源文链接: https://ieien.gitee.io/2019/12/13/mariadb/
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于