docker安装mysql环境

1、拉取mysql镜像

先拉取mysql的镜像,可以在docker的镜像仓库找到不同的TAG标签的版本链接

docker 安装mariadb数据持久化 docker安装部署mysql_mysql


我选择的是5.7docker pull mysql:5.7

docker 安装mariadb数据持久化 docker安装部署mysql_docker_02


2、配置mysql

创建mysql目录,用于存放mysql相关配置及数据。

docker 安装mariadb数据持久化 docker安装部署mysql_mysql命令_03


3、运行mysql容器

docker run -p 3309:3306 --name test_mysql -v /home/hlp/mysql/conf:/etc/mysql/conf.d -v /home/hlp/mysql/logs:/logs -v /home/hlp/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker 安装mariadb数据持久化 docker安装部署mysql_mysql_04


如果执行完后,报错:WARNING: IPv4 forwarding is disabled. Networking will not work.

  • 在/etc/sysctl.conf文件vi /etc/sysctl.conf末尾添加“net.ipv4.ip_forward=1”
  • 重启network服务systemctl restart network
  • 查看正在运行的容器docker ps
  • 停止正在运行的容器docker stop CONTAINER ID,CONTAINER ID是容器ID
  • 删除错误的容器docker rm CONTAINER ID
  • 重新运行刚刚的mysql容器

    命令说明:
  • -p 3309:3306 将容器的3306端口映射到主机的3309端口
  • –name 重命名
  • -v /home/hlp/mysql/conf:/etc/mysql/conf.d 将主机/home/hlp/mysql/conf挂载到容器的/etc/mysql/conf(宿主机目录是自己随意创建的,而容器目录是固定的)
  • -v /home/hlp/mysql/logs:/logs 将主机/home/hlp/mysql/logs挂载到容器/logs
  • -v /home/hlp/mysql/data:/var/lib/mysql 将主机/home/hlp/mysql/data挂载到容器/var/lib/mysql
  • -e MYSQL_ROOT_PASSWORD=123456 初始化root用户的密码
  • -d 挂后台运行
    启动完成后,查看运行状态docker ps 查看/home/hlp/mysql/data目录下会看到有数据

    4、进入容器
    输入docker exec -i -t test_mysql bash进入容器bash,接着输入mysql -uroot -p再输入root用户密码123456进入mysql

进入到mysql命令行就可以用sql语句操作了。退出mysql命令行输入exit,退出容器也是用exit 5、使用Navicat工具连接mysql

如果连接信息都填写正确,但提示1045,则需要进入mysql查看一下远程连接权限

docker 安装mariadb数据持久化 docker安装部署mysql_mysql_05


在mysql命令行输入select host,user from user;查看host下面有没有%,我的表中已经有%数据行,如果没有就需要添加

docker 安装mariadb数据持久化 docker安装部署mysql_mysql_06


1.进行授权:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;允许root用户使用password从任何主机连接到mysql服务器。

2.然后需要执行FLUSH PRIVILEGES;刷新刚刚的授权设置

3.最后退出mysql命令行和mysql容器,重启mysql容器,再次连接就成功了。

一个镜像文件如何启动多个容器

只需要将映射的端口和名称修改即可。如启动两个mysql容器

docker 安装mariadb数据持久化 docker安装部署mysql_mysql命令_07