美文网首页
Docker-Mysql

Docker-Mysql

作者: Plenari | 来源:发表于2019-07-24 17:05 被阅读0次
    • 启动一个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中的连接)

    参考链接

    相关文章

      网友评论

          本文标题:Docker-Mysql

          本文链接:https://www.haomeiwen.com/subject/xyaxrctx.html