# Docker MySQL 数据库配置
当我们使用 Docker 搭建 MySQL 的时候, 我们可能有很多的想法, 比如, 这个不会和宿主机的环境起冲突, 且搭建起来比较简单, 尤其是对于临时使用的人, Docker 的便利点尤为突出. 本文主要想解决的是两个问题, 一个是数据库字符设置的问题, 一个是脚本导入的问题.
docker 建立本地数据库
docker run -itd --name mysql-test -p 23306:3306 -v {本地绝对路径}:{远程绝对路径} -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.32
数据库字符设置的问题
这个问题主要是因为 Docker 的 MySQL 数据库默认的字符设置的是 瑞典的拉丁文, 并不是 utf-8 因此造成中文显示会无法显示, 这也是其中一个很大的问题.
解决办法
- 修改 docker 容器的设置 重启mysql 服务(或者重启 docker 服务亦可以) 修改设置如下:
在 /etc/mysql/my.cnf 中添加如下的配置信息, 如果存在相应的配置信息,则直接修改即可
[mysqld] init_connect='SET collation_connection = utf8_unicode_ci' character-set-server = utf8 collation-server = utf8_unicode_ci [client] default-character-set = utf8
重启 MySQL 或者重启 docker 容器即可显示中文信息 那如何检测呢?
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
显示上述信息即可完成本地中文化的配置
.
第二个挂在本地目录
这个和其他的 docker 配置一样 很简单 只需要在 docker 命令行中添加 -v {本地绝对路径}:{远程绝对路径}
即可
多文件SQL导入
在 bash 中执行如下操作
for SQL in *.sql; do mysql -uroot -p"123456" {databasename} < $SQL ; done -default-character-set = utf8
tips:
查询 数据库中的两个数据表是否有不同数据
SELECT DISTINCT a.id FROM a WHERE a.id NOT in(SELECT id FROM b)
msyql 导入 csv 命令
mysqlimport --ignore-lines=1 --fields-terminated-by=, --verbose --local -u root query ./address.csv
参考文档