- 启动一个mysql后台服务
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
--name some-mysql 对开启的docker重命名
-e设置环境变量,这里设置了root密码my-secret-pw
-d 后台启动
mysql:tag 为镜像名字和tag标签
- 启动一个客服端
docker run -it --network some-network --rm mysql :tag mysql -h localhost --port 3306 -u example-user -p
--network
--rm 退出时删除容器
myql :tag 为启动的镜像
mysql: 启动后运行的命令
-h host地址
--port 端口号
- u 用户名,
-p 有密码登录
- 进入运行的docker
docker exec -it some-mysql bash
- 查看docker的输出
docker logs some-mysql
- 查看内存cpu状态
docker stats
*使用自定义的mysql配置,最主要的是用本地配置所在的文件夹地址和mysql文件夹共享,mysql配置我还不会。
MySQL的默认配置可以在/etc/mysql/my.cnf
,这可能!includedir
其他目录,如/etc/mysql/conf.d
或/etc/mysql/mysql.conf.d..
请查看mysql图像本身获得更多细节。
如果/my/custom/config-file.cnf
是自定义配置文件的路径和名称,您可以启动mysql这样的容器(请注意,在此命令中只使用自定义配置文件的目录路径):
docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
这将启动一个新的容器。some-mysql中MySQL实例使用组合的启动设置的/etc/mysql/my.cnf
和/etc/mysql/conf.d/config-file.cnf
,后者的设置优先。
- 通过命令行配置
许多配置选项可以作为标志传递给mysqld..这将使您可以灵活地自定义容器,而不需要cnf档案。例如,如果要更改所有表的默认编码和排序规则以使用UTF-8(utf8mb4)只运行以下命令:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
如果希望看到可用选项的完整列表,只需运行:
docker run -it --rm mysql:tag --verbose --help
- 设置数据文件位置
docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
text-shell-session $ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
中文编码问题:
这个容器其实服务器是支持中文的,只是客服端不支持,因为我用Python 执行的就可以正确显示中文。客户端通过一定的设置还是可以显示中文的。在mysql客户端里通过:
show variables like '%char%'
显示当前变量的值,然后修改:
set character_set_result = utf8;
set character_set_client = utf8;
set character_set_database = utf8;
set character_set_connection = utf8;
由于超过八个小时链接会消失,所以需要设置一下链接有效期,或者写个客户端定时的访问。
#一年 有效。
cursor.execute('set wait_timeout=259200')
cursor.execute('set interactive_timeout=259200')
wait_timeout -- 指的是mysql在关闭一个非交互的连接之前所要等待的秒数
interactive_time -- 指的是mysql在关闭一个交互的连接之前所要等待的秒数(交互连接如mysql gui tool中的连接)
网友评论