在CentOS系统下数据库为MariaDB,数据库的默认编码方式不能满足需求,我们需把编码方式设为utf-8mb4, 修改方式有两种:
- 数据库配置文件设置
- 数据库参数设置
下面以数据库配置文件的设置为例说明MariaDB默认编码方式的设置,这种方式即灵活,也能彻底修改数据库的编码方式。
1、 创建my.cnf配置文件:
[client-server]
# Port or socket location where to connect
port = 3306
socket = /run/mysqld/mysqld.sock
# Import all .cnf files from configuration directory
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mariadbd]
skip-host-cache
skip-name-resolve
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
!includedir /etc/mysql/mariadb.conf.d/
!includedir /etc/mysql/conf.d/
将my.cnf文件放到宿主机的/root/mariadb/目录下。
2、创建文件夹作为数据库文件存放位置:
mkdir -p /mydata/mariadb/mysql
3、运行镜像
docker run --net bdnetwork --ip 172.100.0.40 -v /mydata/mariadb/mysql:/var/lib/mysql -v /root/mariadb/my.cnf:/etc/mysql/mariadb.cnf --name bd_mariadb -e MARIADB_ROOT_PASSWORD=123456 -d -p 3306:3306 mariadb
说明:
(1)此前已经创建了子网络,创建命令为:
docker network create --subnet=172.100.0.0/16 bdnetwork
创建子网络的目的是为了设置容器的IP为固定的IP。
--net bdnetwork 参数设置子网络,--ip 172.100.0.40设置容器的IP
(2) 设置数据库数据文件保存位置:
-v /mydata/mariadb/mysql:/var/lib/mysql 将宿主机的/mydata/mariadb/mysql目录映射到容器的/var/lib/mysql目录,即数据库数据文件保存目录。
(3)设置数据库配置文件位置
-v /root/mariadb/my.cnf:/etc/mysql/mariadb.cnf 将宿主机的/root/mariadb/my.cnf文件映射为容器的/etc/mysql/mariadb.cnf文件,此文件为MariaDB数据库的配置文件,
(4)设置容器的名称:
--name bd_mariadb
(5)设置数据库root用户默认密码:
-e MARIADB_ROOT_PASSWORD=123456
(6)端口映射:
-p 3306:3306 将容器的3306端口映射为宿主机的3306端口
登录MariaDB数据库,查看数据默认编码方式:
mysql -u root -p
执行以代码:
show variables like '%char%';
可以看到数据库的默认编码方式已经是utf8mb4