华为云HECS云服务器,已经安装了docker环境,准备下docker环境下安装mysql。
登录华为HECS云服务器,安装docker环境。
安装docker参考如下文章:
华为云HECS安装docker并安装mysql-CSDN博客
docker pull mysql:5.7
docker images
或(带mysql关键字过滤)
docker images | grep mysql

- docker run -p 3306:3306 \
- --name=mysql \
- --restart=always \
- --privileged=true \
- -v /var/log/mysql/log:/var/log/mysql \
- -v /usr/local/mysql/data:/var/lib/mysql \
- -v /usr/local/mysql/conf:/etc/mysql/conf.d \
- -e MYSQL_ROOT_PASSWORD=123456 \
- -d mysql:5.7 \
- mysqld --lower_case_table_names=1
-p 3306:3306:指定宿主机端口与容器端口映射关系
--name mysql:创建的容器名称
--restart=always:总是跟随docker启动
-e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456
--privileged=true:获取宿主机root权限。使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。
--lower_case_table_names=1:mysql表名称大小写敏感设置。【0 :表示区分大小写;1 :表示不区分大小写】
-v:分别挂载出来日志、mysql数据和my.cnf,-v 宿主机文件:容器中文件
-d mysql:5.7:表示后台运行mysql容器,mysql:5.7:镜像名和版本,如果这个镜像不存在会自动下载镜像。
docker ps | grep mysql

如上,能查询出结果证明安装成功。8cbca6e62b09 为容器id。
宿主机的/usr/local/mysql/conf目录下创建文件my.cnf

文件内容
- [client]
- default-character-set=utf8
- [mysql]
- default-character-set=utf8
- [mysqld]
- 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
docker restart mysql
docker update mysql --restart=always
docker restart mysql
-it后跟要进入容器的id 或者名字
docker exec -it 8cbca6e62b09 /bin/bash
或者
docker exec -it mysql /bin/bash
注:如果要正常退出不关闭容器,用exit命令,或者按Ctrl+P+Q退出容器

mysql -uroot -p
输入密码,进入mysql
- #创建db01库
- CREATE DATABASE db01;
- #进入db01库
- use db01;
- #创建表t1
- CREATE table t1(id int ,nams varchar(20));
- #新增数据
- INSERT into t1 VALUES (1,"aa");
- #查询t1表
- SELECT * from t1;
- #新增数据
- INSERT into t1 VALUES (2,"王五");
- #查询t1表
- SELECT * from t1;
运行语句界面如下:
注:插入带有汉字的数据报错时

(1)、检查是否设置了my.cnf文件
(2)、检查是否重启了mysql服务,使配置生效
(3)、查看数据库字符是否已经是utf-8
SHOW VARIABLES LIKE 'character_set_%';
show create database db01;

如果不是则设置一下
alter database db01 character set utf8;
在确定数据库已经是utf-8的格式下,检查一下表字段的字符集是否为utf-8
SHOW FULL COLUMNS FROM t1;
如果不是,删表重新创建。
navicat登录mysql

测试连接提示不通,需要在云服务的安全组设置一下规则
登录成功,看到刚刚添加的库表信息