1.准备工作

mkdir mysql
cd mysql
mkdir data
mkdir conf
cd conf
vi my.conf
#  按i  输入下面的配置  
#  完成后按esc键退出编辑的状态  
#  先按:键  再按w键  再按q键 再按enter键 报存退出  
[mysqld]
character-set-server=utf8mb4

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

cd ../
#  切换到mysql 目录下
vi start.sh
#  输入以下内容,按上面步骤退出保存
#!/bin/bash
cur_dir=`pwd`
docker stop anju-mysql
docker rm anju-mysql
docker run --name anju-mysql -v ${cul_dir}/conf:/etc/mysql/conf.d -v ${cur_dir}/data:/var/lib/mysql -p3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
#!/bin/bash
docker stop anju-mysql
docker rm anju-mysql
docker run --name anju-mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql -p3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

注:为什么镜像类目挂载呢?

镜像关闭的时候mysql数据会丢失,需要和data目录挂载同步保存,才能再次启动的时候获取数据。

挂载配置文件是同样的道理。

2.启动镜像创建容器

sh start.sh
# 运行脚本,容器启动,如果没有mysql镜像会自动拉取镜像
# 但是也可以直接先拉取镜像
dokcer pull mysql  

太慢了,因为没有配置镜像员,直接拉的是docker的镜像

3.查看端口是否启动

netstat -na|grep 3306

docker ps

4.如果安装完成在服务其上可以访问mysql,远程访问不了,需要关闭服务防火墙和开放mysql远程权限

查看防火墙状态

firewall-cmd --state

停止firewall

systemctl stop firewalld.service

禁止firewall开机启动

systemctl disable firewalld.service 

开放mysql远程权限

#1.查询正在运行的容器id
docker  ps
#2.进入运行的容器内部   把<id>替换成 你的id  6c**** 
docker exec -it  <id>  /bin/bash
#3.进入mysql
mysql -uroot  -p
#4.输入密码
******
#5.mysql 8 把创建用户和权限控制分开了,如果已经创建了用户可以直接执行下面
ALTER USER 'root'@'%' IDENTIFIED BY '新密码';
#6.开放权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
#7.刷新配置,使其生效
flush privileges;

如果没有不想用root用户给别的ip用就需要现创建用户和权限

 
CREATE USER 'root'@'%' IDENTIFIED BY '111111';
 
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '111111';
 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;


# mysql 8 意思创建用户  和权限控制分开了,如果已经创建了用户可以直接执行下面
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
 
flush privileges;


说明:::linux - mysql 8.0 以上安装步骤_小贺学习笔记的博客-CSDN博客

Logo

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

更多推荐