华为云HECS云服务器docker环境下安装mysql

华为云HECS云服务器,已经安装了docker环境,准备下docker环境下安装mysql。

一、HECS云服务器安装docker

登录华为HECS云服务器,安装docker环境。

安装docker参考如下文章:

华为云HECS安装docker并安装mysql-CSDN博客

二、拉取mysql镜像

1、拉取mysql5.7的镜像

bash 复制代码
docker pull mysql:5.7

2、查看镜像

bash 复制代码
docker images

或(带mysql关键字过滤)

bash 复制代码
docker images | grep mysql

三、运行镜像,创建mysql容器

1运行docker run指令,安装

bash 复制代码
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:镜像名和版本,如果这个镜像不存在会自动下载镜像。

2运行docker ps指令,查看是否安装成功

bash 复制代码
docker ps | grep mysql

如上,能查询出结果证明安装成功。8cbca6e62b09 为容器id。

3、配置mysql(创建my.cnf文件)

宿主机的**/usr/local/mysql/conf目录下创建文件my.cnf**

文件内容

bash 复制代码
[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

4.重启mysql服务 使其配置生效

bash 复制代码
docker restart mysql

5.设置docker启动时就运行mysql

bash 复制代码
docker update mysql --restart=always

6.重启mysql

bash 复制代码
docker restart mysql

四、进入容器

-it后跟要进入容器的id 或者名字

bash 复制代码
docker exec -it 8cbca6e62b09 /bin/bash

或者

复制代码
docker exec -it mysql /bin/bash

注:如果要正常退出不关闭容器,用exit命令,或者按Ctrl+P+Q退出容器

五、mysql操作

1进入mysql

sql 复制代码
mysql -uroot -p

输入密码,进入mysql

2 库表操作

sql 复制代码
#创建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

sql 复制代码
SHOW VARIABLES LIKE 'character_set_%';

show create database db01;

如果不是则设置一下

sql 复制代码
alter database db01 character set utf8;

在确定数据库已经是utf-8的格式下,检查一下表字段的字符集是否为utf-8

sql 复制代码
SHOW FULL COLUMNS FROM t1;

如果不是,删表重新创建。

3 查看创建的库表

navicat登录mysql

测试连接提示不通,需要在云服务的安全组设置一下规则

登录成功,看到刚刚添加的库表信息

相关推荐
RestCloud4 小时前
借助ETL工具,实现AI智能体+数据的落地
数据仓库·人工智能·sql·etl·etlcloud·数据集成平台·java脚本
上海云盾-小余7 小时前
网站频繁遭遇 SQL 注入溯源与原生漏洞修复全流程总结
数据库·sql
_Jimmy_11 小时前
SQLAlchemy 复杂 SQL 执行指南与模板库
python·sql
donoot11 小时前
一次 Nginx 502 问题的深度排查:从 SELinux 到容器网络
nginx·docker·selinux·反向代理·502 bad gateway
2601_9549165912 小时前
ChatGPT 5.6 深度实践:用 AI 重构云成本治理体系,而不是简单“降本”
人工智能·sql·chatgpt·重构·测试用例
肖永威13 小时前
金仓数据库麒麟环境SQL终端使用入门实践(增删改查篇)
数据库·sql·金仓数据库
Sagittarius_A*13 小时前
Docker:渗透前置容器化核心基础
运维·安全·docker·容器
山峰哥14 小时前
数据库工程与SQL优化实战指南‌
数据库·sql·oracle·深度优先·宽度优先
名字还没想好☜16 小时前
Docker 多阶段构建:把镜像从 1.2GB 砍到 15MB
运维·docker·容器·多阶段构建·镜像优化
生活爱好者!17 小时前
NAS还能玩游戏?部署一款 WebGL 3D 赛车小游戏
游戏·docker·容器·玩游戏