Docker容器安装MySQL数据库
拉取Mysql数据库镜像
-- 拉取最新的MySQL数据库镜像 docker pull mysql -- 拉取指定版本的MySQL数据库镜像 docker pull mysql:8.3.0查看拉取的MySQL数据库镜像
docker images编写MySQL配置文件(注意配置文件后缀是.cnf)
vi /docker/mysql/conf/my.cnf[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数据库镜像
安装最新版本的数据库 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.0docker 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)
docker ps -a进入docker容器中的MySQL数据库并登录
进入docker容器中的MySQL数据库。格式:docker exec -it mysql名称 bash docker exec -it mysql bash 登录mysql(使用root账号登录),需要单独输入密码 mysql -u root -p查看/修改远程访问权限
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
-- 启动mysql docker start mysql重启mysql
docker restart mysql
-- 重启mysql docker restart mysql停止mysql
docker stop mysql
-- 停止mysql docker stop mysql常用命令
-- 查看MySQL日志 docker logs mysql