云服务器上Docker中安装mysql

docker容器安装mysql

    1.在docker镜像仓库中查找mysql,根据需求安装指定版本(不指定版本默认安装最新版),博客里安装的为mysql-5.7:

docker pull mysql:5.7

在这里插入图片描述

查看docker容器的镜像

sudo docker images

在这里插入图片描述

创建实例并启动

mysql版本高的话直接跳过当前这个看下一个mysql8.0的配置


docker run -p 3336:3306 --name mysql \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

配置说明

参数说明:
-p 3306:3306: 将容器的3306端口映射到主机的3306端口
-v /data/mysql/conf:/etc/mysql: 将配置文件夹挂载到主机
-v /data/mysql/log:/var/log/mysql: 将日志文件夹挂载到主机
-v /data/mysql/data:/var/lib/mysql: 将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root: 初始化root用户的密码

在这里插入图片描述

mysql配置

执行

vi /data/mysql/conf/my.cnf

增加如下配置:

[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
default-time_zone = '+8:00'
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

mysql 8.0 以上先创建好文件夹然后再加入配置文件,不然会报以下错误

Failed to access directory for --secure-file-priv. Please make sure 
that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files

创建my.cnf配置文件

touch /mydata/mysql/my.cnf

my.cnf添加如下内容:

[mysqld]
user=mysql
character-set-server=utf8
default-time_zone = ‘+8:00’
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

输入docker命令创建mysql容器

docker run \
--restart=always \
--privileged=true \
-p 8088:3306 --name  mysql8-pe \
-v /data/ProductionEnvironment/mysql8/log:/var/log/mysql \
-v /data/ProductionEnvironment/mysql8/data:/var/lib/mysql \
-v /data/ProductionEnvironment/mysql8/my.cnf:/etc/mysql/my.cnf \
-v /data/ProductionEnvironment/mysql8/conf.d:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0

参数说明:

–restart=always: 当Docker 重启时,容器会自动启动。
–privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v /mydata/mysql/log:/var/log/mysql 映射日志文件
-v /opt/mysql/data/:/var/lib/mysql 映射数据目录
-v /mydata/mysql/my.cnf:/etc/mysql/my.cnf 映射配置文件
-v /mydata/mysql/conf.d:/etc/mysql/conf.d 映射配置文件
-e MYSQL_ROOT_PASSWORD=123456 映射mysql root用户密码
-d mysql 以后台方式启动

查看运行的容器

docker ps

在这里插入图片描述

mysql8.0修改用户密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';  

重启mysql容器

docker restart mysql

Navicat等图形管理界面等远程联机云服务器上的数据库

查看正在运行的容器

docker ps

找到mysql5.7的进程号
在这里插入图片描述
ps: 进程号不用全部输入,一般输入前三四位就行

docker exec -it 5ac9 bash

进入容器后再进入数据库
在这里插入图片描述
输入以下命令

select * from mysql.user \G

会发现Root用户的Host的值为localhost,即仅支持本地连接数据库,不支持从自己的电脑远程连接到云服务器
在这里插入图片描述

更改root用户Host的值为 ‘%’使得可以远程访问数据库

update user  set Host = '%' where Host = 'localhost' and user = 'root'; 

 UPDATE `user` SET `Host` = '10.42.*.*' where `Host` = '10.42.*.*' and user = 'root';

授权用户表,添加远程ip访问权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.40.21.12' IDENTIFIED BY 'FJay' WITH GRANT OPTION;

更新Mysql配置

flush privileges;
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值