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; ```