1,Docker 安装MySQL 5.7(超详细文图说明及MySQL配置)
2,docker下安装mysql5.7教程
3,centos7安装mysql5.7步骤(图解版)
可以好好看一看参考3,这样才能明白mysql5.7在linux下是如何安装和配置的,可以为docker下使用mysql5.7提供参考,避免一些基础问题
参考:1,docker官网关于centos下docker安装部分
2, docker配置阿里云镜像加速
#dokcer pull 镜像名:版本号
docker pull mysql:5.7.34
# 宿主机创建数据存放目录映射到容器
mkdir -p /usr/local/docker_data/mysql/data
# 宿主机创建配置文件目录映射到容器
mkdir -p /usr/local/docker_data/mysql/conf #(需要在此目录下创建"conf.d"、"mysql.conf.d"两个目录)
mkdir -p /usr/local/docker_data/mysql/conf/conf.d # (在此目录创建my.cnf文件并进行相关MySQL配置)
mkdir -p /usr/local/docker_data/mysql/conf/mysql.conf.d
# 宿主机创建日志目录映射到容器
mkdir -p /usr/local/docker_data/mysql/logs
docker run \
--privileged=true \
--name mysql5.7 \
-p 3315:3306 \
-e MYSQL_ROOT_PASSWORD=asd123456 \
-d \
-v /usr/local/docker_data/mysql/data:/var/lib/mysql \
-v /usr/local/docker_data/mysql/conf:/etc/mysql/ \
-v /usr/local/docker_data/mysql/logs:/var/log/mysql \
mysql:5.7.34
参数 |
说明 |
--privileged=true |
让容器拥有真正的root权限,否则挂载目录会失败 |
–name mysql5.7 |
容器名称 |
-p 3315:3306 |
端口映射(宿主机端口:容器端口) |
-e MYSQL_ROOT_PASSWORD=asd123456 |
容器的环境变量(root账号初始化密码) |
-d |
后台运行容器 |
-v /usr/local/docker_data/mysql/data:/var/lib/mysql |
容器MySQL数据目录映射(宿主机:容器) |
-v /usr/local/docker_data/mysql/conf:/etc/mysql/ |
容器MySQL配置目录映射(宿主机:容器) |
-v /usr/local/docker_data/mysql/logs:/var/log/mysql |
容器MySQL日志目录映射(宿主机:容器) |
mysql:5.7.34 |
指定docker镜像 (可以是镜像名称或者镜像ID) |
docker ps
#如果启动失败,可以执行以下命令查看容器运行日志来排查
# docker logs --tail=行数 容器名称
docker logs --tail=100 mysql5.7
1,确保服务器安全组开通了3315端口
2,本地基于pycharm的python环境配置参见 windows,pycharm,python,PyMySQL,mysql及应用案例 第2章
如下图所示,链接数据库成功
更多关于mysql权限的资料参考: MySQL查看用户权限及权限管理
docker exec -it mysql5.7 bash
mysql -u root -p
# 创建用户并开启远程登录
CREATE USER 'testaccount'@'%' IDENTIFIED BY 'jkl123456';
# 创建数据库并设置字符集
CREATE DATABASE `test_database` CHARACTER SET 'utf8mb4';
# 给账号授权数据库
GRANT ALL PRIVILEGES ON test_database.* TO 'testaccount'@'%';
FLUSH PRIVILEGES;
cd /usr/local/docker_data/mysql/data
ls
#可以看到服务器本地数据库已经建立了
首先需要进入docker下的mysql环境
#查看所有用户(用户名、给谁授权)
SELECT user,host FROM mysql.user;
#打印信息如下
+---------------+-----------+
| user | host |
+---------------+-----------+
| root | % |
| testaccount | % |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+
#说明root用户已经有本地访问权限,以及远程连接权限
#需要删除远程连接权限的用户
drop user 'root'@'%';
#再查看
SELECT user,host FROM mysql.user;
#打印信息如下
+---------------+-----------+
| user | host |
+---------------+-----------+
| testaccount | % |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+
#说明root远程连接功能已经删除了
————————更新中.....————————
————以下为过程资料,待整理——————
5.
参考
docker制作mysql5.7镜像详解
mysql官网:如何在Linux下安装mysql
准备
重装centos,确保centos环境的干净
centos7下安装MySQL5.7
参考:centos7安装mysql5.7步骤
下载mysql5.7,并使用xftp上传至服务器/tool目录下 (注意:有时单独配置xftp无法连接服务器,但是从xshell里面打开xftp则能够连接服务器,如下图)
检查系统是否安装过mysql
卸载centos7自带的mariadb
检查有无安装过mysql 用户组,没有的话创建mysql用户和组,用于设置mysql安装目录文件所有者和所属组
1.useradd -r 表示mysql用户是系统用户, 不可用于登录系统
2.useradd -g 表示把mysql用户添加到mysql用户组中
解压mysql压缩包及相关操作
#解压,移动到/mysql/目录下,并重命名为mysql5.7
cd /tool
ls
tar -zxvf mysql-5.7.41xxx-x86_64.tar.gz
mv mysql-5.7.41xxx-x86_64/ /mysql/mysql5.7
修改mysql5.7的用户组和权限
#设置/mysql/mysql5.7目录及以下目录的所有者为mysql组的mysql用户
cd /mysql/mysql5.7
chown -R mysql:mysql /mysql/mysql5.7
#设置权限
chmod -R 755 /mysql/mysql5.7
#查看权限
ls -l
创建必要的文件夹
cd /mysql/mysql5.7
mkdir tmp log data
安装依赖
yum -y install libaio
编译安装并初始化mysql,务必记住数据库管理员临时密码,如下图画红色框的部分。
cd /mysql/mysql5.7/bin
#--user 启动mysql的用户 --basedir mysql 的安装目录--datadir mysql数据仓库目录
./mysqld --initialize --user=mysql --basedir=/mysql/mysql5.7 --datadir=/mysql/mysql5.7/data
编写etc目录下的my.cnf 配置文件,添加配置项,并授权
vi /etc/my.cnf
#以下为my.cnf文件内容
[mysqld]
port = 3306
basedir = /mysql/mysql5.7
datadir = /mysql/mysql5.7/data
#my.conf文件内容结束
#授权
chmod -R 775 /etc/my.cnf
修改mysql5.7/support-files/目录下的mysql.server文件,将默认的安装位置/usr/local/mysql修改为/mysql/mysql5.7(包括:basedir, datadir, bindir, sbindir,libexecdir,共5项)
cd /mysql/mysql5.7/support-files
vi mysql.server
#修改:basedir, datadir, bindir, sbindir,libexecdir,共5项
添加软连接,并启动mysql服务
ln -s /mysql/mysql5.7/support-files/mysql.server /etc/init.d/mysql
ln -s /mysql/mysql5.7/bin/mysql /usr/bin/mysql
service mysql start
ps -ef|grep mysql
登录mysql ,密码就是初始化时生成的临时密码
mysql -u root -p
修改密码为123456
set password for root@localhost = password('123456');
开放mysql数据库的远程连接
更多关于mysql权限的资料参考: MySQL查看用户权限及权限管理
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
重启mysql服务,必须重启才能远端连接
#退出mysql环境
exit;
#重启mysql服务
service mysql restart
设置开机自启动
#将服务文件拷贝到init.d下,并重命名为mysql
cp /mysql/mysql5.7/support-files/mysql.server /etc/init.d/mysqld
#赋予可执行权限
chmod +x /etc/init.d/mysqld
#添加服务
chkconfig --add mysqld
#显示服务列表
chkconfig --list
开放3306端口
#开放3306端口命令
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#配置立即生效
firewall-cmd --reload
使用navicat测试本地连接是否成功
使用pymysql连接数据库
docker安装
远程连接MySQL数据库
参考:Navicat远程连接MySQL服务器
参考:免费试用攻略 | Navciat 16 数据库管理工具
参考
错误处理:
mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘ (Errcode: 2 - No such file or directory
安装步骤:
Docker下安装mysql超详细步骤
Docker安装并使用Mysql
3、下载MySQL5.7镜像
下载MySQL5.7镜像
docker pull mysql:5.7
查看是否下载完成
docker images
运行MySQL5.7
docker run -d -p 3306:3306 --name mysql -v /mysqldata/mysql/log:/var/log/mysql -v /mysqldata/mysql/data:/var/lib/mysql -v /mysqldata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7
上述命令的含义:
docker run:在docker中启动一个容器实例
-d:该容器在后台运行
-p 3306:3306:容器与主机映射端口为, 3306(主机端口,即外部连接mysql使用的端口号): 3306(容器端口)
--name mysql:容器运行后的名称
-v /mysqldata/mysql/log:/var/log/mysql:将容器/var/log/mysql目录下的数据,备份到主机的 /mysqldata/mysql/log目录下
-v /mysqldata/mysql/data:/var/lib/mysql:将容器/var/lib/mysql目录下的数据,备份到主机的 /mysqldata/mysql/data目录下
-v /mysqldata/mysql/conf:/etc/mysql:将容器/etc/mysql目录下的数据,备份到主机的 mysqldata/mysql/conf目录下
-e MYSQL_ROOT_PASSWORD=root:设置当前mysql实例的密码为root
mysql:5.7:需要运行的容器名称以及版本号
通过此处-v 命令备份后,就算当前mysql容器实例被删除,那么再次重启mysql容器后,数据将会自动重主机加载到容器当中
运行如下命令
docker run -d -p 3306:3306 --name mysql -v /mysqldata/mysql/log:/var/log/mysql -v /mysqldata/mysql/data:/var/lib/mysql -v /mysqldata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7
docker ps
发现mysql容器并未运行,查看log
#获取mysql容器id
docker ps -a
#查看mysql容器log
docker logs mysql容器id
因此错误原因为没有读取到conf.d文件,因此按照参考文件,先