MySQL安装

1、拉取最新的MYSQL镜像

docker pull mysql:5.7

2、镜像查看与删除

#查看镜像
docker images
#删除镜像
docker rmi hello-world
#查看运行的容器
docker ps
#停止容器
docker stop mysql
#查看所有容器 包括已经停止的
docker ps -a
#删除容器
docker rm mysql

 

3、创建MySQL容器

3.1 挂载本地目录

  • 创建本地MySQL映射目录
mkdir -p /home/mysql/data /home/mysql/logs /home/mysql/conf
  • 在/root/mysql/conf中创建 *.cnf 文件
cd /home/mysql/conf
touch my.cnf
  • 创建容器,将数据,日志,配置文件映射到本机
docker run -p 3306:3306 --name mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/logs:/logs -v /home/mysql/data:/var/lib/mysql -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=root -d --restart=always mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --lower_case_table_names=1

以上是安装指令脚本,下面对各个配置进行讲解

-d 后台运行

--restart=always 设置开机重启

--name mysqltest 设置该容器的名称,这儿是自定义,可以自由备注

-p 设置端口号映射,容器外端口:容器内端口

-v 卷挂载 (容器外目录:容器内目录)这儿我们对数据目录、配置文件目录和日志目录进行了挂载,类似这些需要被持久化的数据,需要的存储至容器外,避免容器删除后数据的丢失

-e msyql的环境配置
 

MySQL设置远程访问

  • 进入容器

    docker exec -it mysql /bin/bash
    
  • 进入MySQL

    mysql -uroot -p123456
    
  • 若报错

    若报错Access denied for user 'root'@'localhost' (using password: YES)
    则进行以下步骤:
    在my.cnf文件的[mysqld]这个条目下加入skip-grant-tables保存退出后重启mysql。这句话的意思是跳过验证阶段,在数据库容器中输入mysql -u root -p后,在输入密码的时候可以直接敲回车进入数据库操作界面。
    在终端输入doker exec -it mysql /bin/bash进入到mysql容器的交互命令端。
    在mysql容器交互命令端输入mysql -u root -p后,在输入密码的时候直接敲回车,进入数据库命令交互端。
    进入数据库命令交互端后,依次进行以下操作。
    第一步,选择名为mysql的数据库
    mysql> use mysql;
    
    第二步,为root用户设置密码
    mysql> update user set password=password("新密码") where user="root";   #mysql5.7版之前
    mysql> update mysql.user set authentication_string=password('新密码') where user='root';  #mysql5.7版及之后
    
    第三步,刷新数据库
    mysql> flush privileges;
    
    第四步,退出数据库
    mysql> quit;
    将my.cnf文件的[mysqld]这个条目下的skip-grant-tables删除,保存退出后重启mysql
    再用数据库连接工具进行测试,发现可以成功连接
    
  • 若未报错

    #设置mysql远程权限
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    #刷新权限
    flush privileges;

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐