CentOS 安装 MariaDB 数据库,修改字符集


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 最新版本

删除原有的软件包

  1. 使用搜索 MariaDB 现有的包,一般会搜到 mariadb-libs-5.5.60-1.el7_5.x86_64
     rpm -qa | grep mariadb
    
  2. 如果存在,使用全部删除
     rpm -e --nodeps mariadb-*
     //或者
     rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
    

配置 yum 源

  1. 使用源配置向导
    https://downloads.mariadb.org/mariadb/repositories

    可以选择合适的操作系统和想要安装的 MariaDB 版本,然后自动生成源配置。

  2. 配置 yum 源

     cd /etc/yum.repos.d/
     vim MariaDB.repo
    

    将上面红框中的内容复制进去,保存退出。

安装 MariaDB

  1. 安装

     yum install MariaDB-server MariaDB-client
    

    如果出现了" MariaDB can’t be installed because of conflict with mariadb-libs-xxxx ",则需要先卸载当前安装的版本:

     yum remove mariadb-libs*
    

    安装完成后,会提示你为 root 设置密码,此时需要先运行 MariaDB。
    运行 MariaDB

     service mysql start
    

    输出:

     Starting mysql (via systemctl): [ OK ]
    
  2. 初始配置 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
    
  3. 常用命令

     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 目录下的配置文件。

  1. 编辑 /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] 标签下添加以上内容。

  2. 在 /etc/my.cnf.d/client.cnf (没有就跳过)文件中的 [client] 中添加:

     default-character-set=utf8
    
  3. 在文件 /etc/my.cnf.d/mysql-clients.cnf 中的 [mysql] 中添加:

     default-character-set=utf8
    
  4. 全部配置完成,重启 MariaDB

     systemctl restart mariadb
    
  5. 进入 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;

结果如下图,说明设置正确

注意:已经创建的表的编码并不会被修改,设置只对之后创建的表有用


  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    746 引用 • 870 回帖 • 553 关注
  • MariaDB
    19 引用 • 15 回帖
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    193 引用 • 202 回帖 • 489 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    535 引用 • 501 回帖 • 717 关注
2 操作
ieien 在 2020-03-01 23:01:24 更新了该帖
ieien 在 2020-02-28 17:41:11 更新了该帖
回帖
请输入回帖内容...