找回密码
 注册
查看: 2547|回復: 0

[教程分享] 指定docker容器MariaDB数据库的编码格式(10.5.6-MariaDB-1:10.5.6+maria~focal)

[複製鏈接]
fakemonkjiang 發表於 2021-11-17 14:37:08 | 顯示全部樓層 |閱讀模式
【背景】
最近需要在一个openstack虚拟机上部署一个软件,需要用到mariadb数据库,但是安装数据库,导入数据后发现在web上显示的数据库是乱码的。

【环境】
openstack-T集群。
openstack虚拟机上安装的是ubuntu18.04 LTS。
mariadb使用的目前(当时是2020年11月6日,创建完成后发现此mariadb数据库的版本是10.5.6-MariaDB-1:10.5.6+maria~focal)Docker Hub的latest标签的mariadb image。

【过程】
1、搭建好Ubuntu环境上的docker环境。
2、使用如下命令指定创建的mariadb数据库服务器端的编码,同时指定数据库用户root用户密码、创建了数据库用户admin用户并指定密码
```bash
docker run --name mariadb -p 3306:3306 \
  -v /opt/docker/mariadb_data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=root@123 \
  -e MYSQL_USER=admin \
  -e MYSQL_PASSWORD=admin@123 \
  -e MYSQL_ROOT_HOST=% \
  -d mariadb \
  --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
```
3、创建完mariadb容器后,不要马上导入数据。还要先设置下数据库客户端等的编码格式,设置方式是修改以下文件
```bash
vi etc/mysql/mariadb.conf.d/50-client.cnf
```
在[client] 部分下面插入内容:default-character-set=utf8mb4
4、重启下mariadb容器,查看mariadb相关编码
```bash
mysql -uroot -proot@123
#此时已经成功登录进数据库内,以下在数据库内操作
show variables like '%character%';
```
会发现mariadb相关编码已经变成如下(以下的变化是针对修改文件etc/mysql/mariadb.conf.d/50-client.cnf前后而言):

5、此时再执行向数据库中导入数据等操作(保证插入的数据也是采用utf8编码格式),这样导入的数据就不会是乱码的了。

【相关知识】
1、查看mariadb数据库版本
```bash
#登录到数据库内后
select version();

您需要登錄後才可以回帖 登录 | 注册

本版積分規則

手机版|小黑屋|Linux公社论坛

GMT+8, 2025-5-29 05:04 , Processed in 0.062500 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表