神速·搭建MySQL

一、Docker搭建MySQL

1. 获取镜像

docker pull mysql:5.7

2. 运行镜像

2.1 不映射目录

docker run -itd -p  主机端口:3306 -e MYSQL_ROOT_PASSWORD= 密码  镜像id

  • -p 3306:3306 即将容器的3306端口映射到主机的3306端口上
  • -e MYSQL_ROOT_PASSWORD=123456 设置用户为root,密码为123456

不映射目录的情况下数据不能持久化保存,容器没了就得跑路了

2.2 映射目录

docker run -itd -p 主机端口:3306 -v 宿主机目录:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= 密码  镜像id
  • -v 宿主机目录:容器目录 将容器内的目录文件映射到宿主机对应的目录下

这样就容器内的 /var/lib/mysql 目录映射到了宿主机的D:/volume/mysql目录上,容器没了数据还在

2.3 设置UTF-8格式

docker run -itd -p 主机端口:3306 -e MYSQL_ROOT_PASSWORD=密码 --mysql --character-set-server=utf8 --collation-server=utf8_general_ci  镜像id
  • –character-set-server=utf8 : 设置字符集为utf8

  • –collation-server=utf8_general_cli : 设置字符比较规则为utf8_general_cli


3. 远程连接

3.1 登录MySQL

docker exec -it 容器id bash

mysql -u root -p

输入刚才设置的密码

3.2 设置允许远程登录

grant all privileges on *.* to 'root'@'%' identified by 'MYSQL密码';

flush privileges;

3.4 测试

新建一个数据库Test

如果设置了目录映射的话就能在宿主机中看见了

4.常见问题

4.1 中文乱码问题

进入容器内,执行

echo "character-set-server=utf8" >> /etc/mysql/mysql.conf.d/mysqld.cnf

service mysql restart

4.2 降低容器占用内存

进入容器内,执行

vim /etc/mysql/mysql.conf.d/mysqld.cnf

在该文件的最后追加

performance_schema_max_table_instances=400

table_definition_cache=400

table_open_cache=256

重启容器或者重启MySQL服务即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章