快速安装 Mysql 8.x

  • 启动未映射配置目录的Mysql容器, 用于复制默认配置
  • 由于没有配置文件无法直接启动 Mysql 所以将 映射到了
  • 外部目录 /data/docker-data/mysql-service/conf/ 映射到了 /etc/mysql.extract/ ```bash __run_mysql8() { _name=”mysql-service” docker rm -f “$_name” docker run —name “$_name” -t \
    1. --restart=always \
    2. -p 3306:3306 \
    3. -e MYSQL_USER="user_name" \
    4. -e MYSQL_PASSWORD="user_pwd" \
    5. -e MYSQL_ROOT_PASSWORD="root_pwd" \
    6. -v /data/docker-data/mysql-service/conf/:/etc/mysql.extract/ \
    7. -v /data/docker-data/mysql-service/data/:/var/lib/mysql \
    8. -d mysql:8.0.29 \
    9. --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci \
    10. --default-authentication-plugin=mysql_native_password

} __run_mysql8

  1. <a name="QWuAU"></a>
  2. ### 如果不需要自定义 my.cnf 配置文件, 那么你的安装就结束了, 反正则可以继续看
  3. 如果想自定义配置, 那么在容器内部执行命令将 配置文件复制到 /data/docker-data/mysql-service/conf/
  4. ```bash
  5. docker exec -it -u root mysql-service bash -c 'cp -rf /etc/mysql/* /etc/mysql.extract/'

然后修改容器启动命令再次运行, 注意下面 第 11 行和上面第11 行的变化

  1. __run_mysql8() {
  2. _name="mysql-service"
  3. docker rm -f "$_name"
  4. docker run --name "$_name" -t \
  5. --restart=always \
  6. --network=host \
  7. -p 3306:3306 \
  8. -e MYSQL_USER="user_name" \
  9. -e MYSQL_PASSWORD="user_pwd" \
  10. -e MYSQL_ROOT_PASSWORD="root_pwd" \
  11. -v /data/docker-data/mysql-service/conf/:/etc/mysql/ \
  12. -v /data/docker-data/mysql-service/data/:/var/lib/mysql \
  13. -d mysql:8.0.27 \
  14. --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci \
  15. --default-authentication-plugin=mysql_native_password
  16. }
  17. __run_mysql8

常用配置文件

如果你不熟悉 Mysql 配置, 学习阶段保持默认配置就行
写入配置后需要重新 Mysql 容器

设备内存 4G 左右的配置

  1. __set_config_mysql() {
  2. mkdir -p /data/docker-data/mysql-service/conf/
  3. cat >/data/docker-data/mysql-service/conf/my.cnf <<-'AEOF'
  4. [mysqld]
  5. pid-file = /var/run/mysqld/mysqld.pid
  6. socket = /var/run/mysqld/mysqld.sock
  7. datadir = /var/lib/mysql
  8. secure-file-priv= NULL
  9. # Custom config should go here
  10. !includedir /etc/mysql/conf.d/
  11. max_connections=1000
  12. max_heap_table_size=1G
  13. tmp_table_size=1G
  14. join_buffer_size=2G
  15. innodb_buffer_pool_size=2G
  16. innodb_buffer_pool_instances=32
  17. innodb_flush_log_at_timeout=5
  18. innodb_read_io_threads=16
  19. innodb_write_io_threads=16
  20. innodb_io_capacity=2000
  21. innodb_io_capacity_max=5000
  22. AEOF
  23. }
  24. __set_config_mysql

推荐使用 phpmyadmin方便学习

  1. __myadmin() {
  2. docker rm -f myadmin
  3. docker run -d -p 33068:80 \
  4. -e PMA_HOST="192.168.66.100" \
  5. -e PMA_PORT=3306 \
  6. -e PMA_USER=root \
  7. -e PMA_PASSWORD=root_pwd \
  8. --name myadmin \
  9. phpmyadmin/phpmyadmin
  10. }
  11. __myadmin