指定docker容器MariaDB数据库的编码格式(10.5.6-MariaDB-1:10.5.6+maria~focal)
【背景】最近需要在一个openstack虚拟机上部署一个软件,需要用到mariadb数据库,但是安装数据库,导入数据后发现在web上显示的数据库是乱码的。【环境】openstack-T集群。openstack虚拟机上安装的是ubuntu18.04 LTS。mariadb使用的目前(当时是2020年11月6日,创建完成后发现此mariadb数据库的版本是10.5.6-MariaDB-1:10.5.6
【背景】
最近需要在一个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;
更多推荐
所有评论(0)