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

本文介绍如何在Ubuntu 18.04 LTS上通过Docker部署MariaDB,并配置正确的字符集来避免乱码问题。包括设置服务器端编码、客户端编码及重启容器的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【背景】
最近需要在一个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用户并指定密码

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:10.5.6-focal   \
  --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

3、创建完mariadb容器后,不要马上导入数据。还要先进入容器先设置下数据库客户端等的编码格式,设置方式是修改以下文件

vi /etc/mysql/mariadb.conf.d/50-client.cnf

在[client] 部分下面插入内容:default-character-set=utf8mb4
4、重启下mariadb容器,查看mariadb相关编码

mysql -uroot -proot@123
#此时已经成功登录进数据库内,以下在数据库内操作
show variables like '%character%';

会发现mariadb相关编码已经变成如下(以下的变化是针对修改文件etc/mysql/mariadb.conf.d/50-client.cnf前后而言):
在这里插入图片描述
5、此时再执行向数据库中导入数据等操作(保证插入的数据也是采用utf8编码格式),这样导入的数据就不会是乱码的了。

【相关知识】
1、查看mariadb数据库版本

#登录到数据库内后
select version();

2、创建数据库并指定编码格式

create database test01 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值