mysql
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456-d mysql:5.6
docker run --privileged=true \
-p 3306:3306 --name=mysql8 \
-v /data/mysql/data/:/var/lib/mysql \
-v /data/mysql/logs/:/var/log/mysql \
-v /data/mysql/conf/:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:latest --lower_case_table_names=1
```language
# 使用官方MySQL镜像
FROM mysql:latest
# 设置root用户的密码
ENV MYSQL_ROOT_PASSWORD=123456
# 设置字符集
ENV LANG=C.UTF-8
# 将自定义配置文件复制到镜像中
COPY my.cnf /etc/mysql/my.cnf
# 将初始化SQL脚本复制到镜像中
COPY init.sql /docker-entrypoint-initdb.d/
# 持久化数据卷
VOLUME /var/lib/mysql
```
FROM mysql:latest:表示该镜像是基于官方MySQL镜像构建的,使用latest标签表示使用最新版本。
ENV MYSQL_ROOT_PASSWORD=123456:设置MySQL的root用户密码为123456,这是一个环境变量。
ENV LANG=C.UTF-8:设置字符集为UTF-8,确保正确的字符处理。
COPY my.cnf /etc/mysql/my.cnf:将自定义的MySQL配置文件my.cnf复制到镜像中的/etc/mysql/my.cnf路径下。
COPY init.sql /docker-entrypoint-initdb.d/:将初始化SQL脚本init.sql复制到镜像中的/docker-entrypoint-initdb.d/路径下,该脚本将在容器启动时自动执行,用于初始化数据库。
VOLUME /var/lib/mysql:将MySQL数据目录挂载到宿主机上的/var/lib/mysql目录中,以便将数据存储在宿主机的持久化数据卷中。
1.进入容器内部
docker exec -it mysql8 /bin/bash
2.连接mysql
mysql -u root -p
3.使用mysql库
use mysql
4.修改访问主机以及密码等,设置为所有主机可访问
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
注意:mysql_native_password,mysql8.x版本必须使用这种模式,否则navicate无法正确连接
# 安装mysql
# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
# 安装Mysql8.x版本 yum库
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
使用yum安装MySQL
# yum安装Mysql
yum -y install mysql-community-server
安装完成后,启动MySQL并配置开机自启动
# 启动mysql
systemctl start mysqld
# 开机自启mysqld
systemctl enable mysqld
#检查mysqld运行状态
systemctl status mysqld
二、配置
获取MySQL的初始密码
# 在/var/log/mysqld.log文件中过滤临时密码
grep 'temporary password' /var/log/mysqld.log
登录MySQL
mysql -uroot -p
修改root密码
- 密码需要包含大小写+特殊字符
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'O415263o&';
修改密码强度等级(非必要)
-- 密码安全等级修改为“低”
set global validate_password.policy=0;
-- 密码长度最低修改为4
set global validate_password.length=4;
--退出控制台Ctrl+D或exit
exit
检查mysqld端口是否为3306
# 检查端口情况
netstat -anp | grep 3306
#### 不能远程连接:
```language
mysql -u root -p
use mysql;
select host from user where user='root';
update user set host = '%' where user = 'root';
flush privileges;
```