拉取Mysql数据库镜像
bash
-- 拉取最新的MySQL数据库镜像
docker pull mysql
-- 拉取指定版本的MySQL数据库镜像
docker pull mysql:8.3.0
查看拉取的MySQL数据库镜像
bash
docker images
编写MySQL配置文件(注意配置文件后缀是.cnf)
sql
vi /docker/mysql/conf/my.cnf
sql
[client]
# 端口号
port=3306
[mysql]
no-beep
# 配置了 MySQL 客户端的默认字符集
default-character-set=utf8mb4
[mysqld]
# 端口号
port=3306
# 数据目录
datadir=/var/lib/mysql
# 设置了 MySQL 服务器的字符集为 UTF-8
character-set-server=utf8mb4
# 设置了 MySQL 服务器的排序规则为 utf8mb4_unicode_ci,通常用于支持国际化和多语言字符的正确排序
collation-server=utf8mb4_unicode_ci
# 用于禁用客户端字符集握手,允许客户端和服务器之间的字符集设置更加灵活
skip-character-set-client-handshake
# 禁用了主机名解析,以提高连接性能
skip-name-resolve
# 默认存储引擎
default-storage-engine=INNODB
# 将 SQL 模式设置为严格
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
# 最大连接数
max_connections=1024
# 表缓存
table_open_cache=2000
# 表内存
tmp_table_size=16M
# 线程缓存
thread_cache_size=10
# 设置大小写不敏感
lower_case_table_names=1
# 设置默认时区
default_time_zone='+8:00'
# myisam设置
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=8M
key_buffer_size=8M
read_buffer_size=0
read_rnd_buffer_size=0
# innodb设置
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=8M
innodb_log_file_size=48M
innodb_thread_concurrency=33
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
# 其他设置
back_log=80
flush_time=0
join_buffer_size=256K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4161
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000
安装MySQL数据库镜像
bash
安装最新版本的数据库
sudo docker run -p 3306:3306 --name mysql \
-v /docker/mysql/log:/var/log/mysql \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql
安装指定版本的数据库
sudo docker run -p 3306:3306 --name mysql \
-v /docker/mysql/log:/var/log/mysql \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.3.0
docker run:在docker中启动一个容器实例
-d:该容器在后台运行
-p 3306:3306:容器与主机端口映射
--name mysql:容器运行后的名称
-v /docker/mysql/log:/var/log/mysql:将容器/var/log/mysql目录下的数据,备份到主机的 /docker/mysql/log目录下
-v /docker/mysql/data:/var/lib/mysql:将容器/var/lib/mysql目录下的数据,备份到主机的 /docker/mysql/data目录下
-v /docker/mysql/conf:/etc/mysql:将容器/etc/mysql目录下的数据,备份到主机的 docker/mysql/conf目录下
-e MYSQL_ROOT_PASSWORD=root:设置当前mysql实例的密码为root
mysql:8.3.0 :需要运行的容器名称以及版本号(最新版本的数据库省略:后面的版本)
查看进程(如果按照以上的步骤执行进程名称是mysql)
bash
docker ps -a
进入docker容器中的MySQL数据库并登录
bash
进入docker容器中的MySQL数据库。格式:docker exec -it mysql名称 bash
docker exec -it mysql bash
登录mysql(使用root账号登录),需要单独输入密码
mysql -u root -p
查看/修改远程访问权限
bash
sql命令:
进入数据库
use mysql;
查看用户和连接
select host,user from user;
-- 修改用户和连接
-- 刷新
flush privileges;
把root用户的密码改成 mysql_native_password 模式,即可远程连接
设置/取消开机启动
-- 获取MySQL容器ID
docker ps
-- 设置开机启动
docker update --restart=always 容器ID
-- 取消开机启动
docker update --restart=no 容器ID
启动MySQL
bash
-- 启动mysql
docker start mysql
重启mysql
docker restart mysql
bash
-- 重启mysql
docker restart mysql
停止mysql
docker stop mysql
bash
-- 停止mysql
docker stop mysql
常用命令
-- 查看MySQL日志
docker logs mysql