Docker安装MySQL5.7并挂载到宿主机

2021-12-01  本文已影响0人  王小児

1.docker中拉取Mysql镜像

  docker pull mysql:5.7

2.在宿主机创建用于挂载的目录

  mkdir –p /data/mysql/logs /data/mysql/conf /data/mysql/data

3.使用镜像创建容器

#将容器中MySQL的3306端口映射到本地的3307端口,并设置登录密码为:123456
docker run --name mysql5.7 -p 3307:3306 -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7:

参数解析:

4. 进入容器

docker start 容器ID
docker exec -it 容器名字 /bin/bash

[root@iZf8z14idfp0rzrwd3y22vZ mysql]# docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS         PORTS                               NAMES
33ddd7fb4b8c   mysql:5.7                "docker-entrypoint.s…"   10 seconds ago   Up 9 seconds   33060/tcp, 0.0.0.0:3307->3306/tcp   mysql5.7
[root@iZf8z14idfp0rzrwd3y22vZ mysql]# docker exec -it 33ddd7fb4b8c  /bin/bash
root@33ddd7fb4b8c:/# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective

5.配置mysqld.cnf文件

在宿主机上该目录下:/data/mysql/conf创建一个mysqld.cnf
内容如下

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
#

[client]
port=3306
socket          = /var/run/mysqld/mysqld.sock
#default-character-set = utf8mb4

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
log_output      = FILE

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

symbolic-links=0

lower_case_table_names=1
default-storage-engine=INNODB
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
event_scheduler=ON
default-storage-engine=INNODB
max_allowed_packet = 16M
wait_timeout    = 31536000
interactive_timeout = 31536000
connect_timeout = 20

back_log = 512
max_connections = 2048
max_connect_errors = 128
open_files_limit = 8192

key_buffer_size = 1024M

sort_buffer_size = 32M
read_buffer_size = 32M
join_buffer_size = 32M
read_rnd_buffer_size = 8M
bulk_insert_buffer_size = 32M

myisam_max_sort_file_size = 100G
myisam_sort_buffer_size=64M

thread_cache_size = 64
thread_stack = 512k

query_cache_limit = 4M
query_cache_size = 128M
query_cache_min_res_unit= 2k

tmp_table_size = 256M
max_heap_table_size = 256M
max_tmp_tables = 512
bulk_insert_buffer_size = 16M
skip-name-resolve
skip-grant-tables
slow_query_log
long_query_time = 0.1

innodb_open_files = 20480

#memlock
innodb_buffer_pool_instances=4
innodb_buffer_pool_size = 245M
innodb_log_file_size = 64M
innodb_file_per_table = 1
innodb_lock_wait_timeout = 50
innodb_flush_log_at_trx_commit = 0
innodb_flush_method = O_DIRECT
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90

server-id = 1
log-bin = /var/lib/mysql/mysql-bin
expire_logs_days = 7
relay_log_info_file = /var/lib/mysql/relay_info.log
binlog_format = ROW
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=test
log-slave-updates

[mysqldump]
quick
max_allowed_packet = 48M

[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

#[mysqld_safe]
#log-error=/var/log/mysqld.log
#pid-file=/var/run/mysqld/mysqld.pid

如果是在阿里云服务器上。还需要在安全组里面添加3307端口

上一篇下一篇

猜你喜欢

热点阅读