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:
参数解析:
- --name:容器名
- --p:映射宿主主机端口
- -v:挂载宿主目录到容器目录
- -e:设置环境变量,此处指定root密码
- -d:后台运行容器
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端口
网友评论