鲲鹏云主机使用Docker安装MySQL

最近因项目需求需要在鲲鹏云主机A上部署Docker版的MySQL,由于该环境无法联网,因此无法使用在线方式安装。好在另外一个环境有相同的鲲鹏云主机B,操作系统也是一样,而且也可以联网,因此先在这台主机上将MySQL的镜像做好,然后导入到前面提到的环境。

操作系统基本信息如下:

[root@test ~]# uname -a
Linux cim01 4.19.148+ #1 SMP Mon Oct 5 22:04:46 EDT 2020 aarch64 aarch64 aarch64 GNU/Linux

操作系统版本信息如下:

[root@test ~]# cat /etc/.kyinfo 
[dist]
name=Kylin-Server
milestone=10-SP1-Release-Build04-20200711
arch=arm64
beta=False
time=2020-07-11 17:16:54
dist_id=Kylin-Server-10-SP1-Release-Build04-20200711-arm64-2020-07-11 17:16:54

[servicekey]
key=873336

[os]
to=测试环境
term=2021-08-21

[installer]
kylin_type=standard

操作步骤如下:

主机B上执行命令docker images:

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
yrzr/gitlab-ce-arm64v8     latest              9cbe4bebd053        4 months ago        2.84GB
jenkins/jenkins            lts                 520660973651        5 months ago        504MB
nginx                      latest              91582cfffc2d        6 months ago        192MB
arm64v8/mysql              latest              bdfb0ec4d54a        7 months ago        599MB
garethflowers/svn-server   latest              942dd6df19f9        11 months ago       18.6MB
nacos/nacos-server         2.0.3               433eb51fef8d        2 years ago         1.05GB
redis                      4.0.9               1f0d7a5aa2a6        5 years ago         101MB

继续执行docker save -o mysql.tar arm64v8/mysql。

docker save命令语法:docker save [OPTIONS] IMAGE [IMAGE...]
docker save -o, --output    将归档文件输出到的文件。

然后将mysql.tar上传到主机A,执行docker load -i mysql.tar

docker load命令语法:docker load [OPTIONS]
docker load -i	指定导出的文件。
docker load -q	精简输出信息。

执行完成后,镜像已导入到云主机A上docker中,可使用docker images进行查看是否导入成功。

如果主机A可以上网或者有可下载的镜像源,可以忽略前面的步骤,直接从这里开始操作。

首先在云主机A上创建/data/docker/mysql和/data/docker/mysql/data目录,然后将文件my.cnf上传到/data/docker/mysql,my.cnf内容如下

[mysqld]
# 设置3306端口
port=3306
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
performance_schema_max_table_instances = 600
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

云主机A上创建MySQL镜像执行如下命令:

docker run -d -p 3306:3306 --name mysql --privileged=true -e MYSQL_ROOT_PASSWORD="888888" -e MYSQL_USER="admin" -e MYSQL_PASSWORD="888888" -v=/data/docker/mysql/my.cnf:/etc/my.cnf -v=/data/docker/mysql/data:/var/lib/mysql arm64v8/mysql:latest

docker run 参数

    -i:保持容器运行,加入-it参数后,容器创建后会自动进入容器中,退出容器后,容器会自动关闭。
    -t:为容器重新分配一个伪输入终端,通常和-i同时使用。
    -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。
    -it:创建的容器一般称为交互式容器。
    -id:创建的容器一般称为守护式容器、
    –name:威创建的容器命名。
    -p:映射端口 外部端口:容器内部暴露的端口

进入镜像进行授权

docker exec -it mysql /bin/bash

使用 docker exec 命令的格式如下:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
    其中,OPTIONS 可以省略,常用的选项如下:
    -i:保持标准输入打开,使得可以与容器交互。
    -t:分配一个伪终端,使得可以与容器交互。
    CONTAINER 是要操作的容器的名称或 ID。
    COMMAND 是要在容器内运行的命令。
    ARG... 是命令的参数。

执行登录

mysql -uroot -p

输入密码,然后依次执行如下命令:

GRANT ALL ON . TO 'root'@'%';

GRANT ALL ON . TO 'admin'@'%';

FLUSH PRIVILEGES;

退出镜像访问,在主机A上设置外网访问

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

设置成功后可使用如下命令查看端口是否开通

[root@test ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp3s0
  sources: 
  services: ssh mdns dhcpv6-client cockpit http https
  ports: 80/tcp 3306/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

如果还是无法访问,使用vim /etc/sysconfig/iptables,增加

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

[root@test ~]# vim /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

然后执行

service iptables restart

这时候就可以在其它服务器上执行连接这台服务器的mysql了

使用命令

mysql -h IP地址 -P3306 -uadmin -p

mysql.tar为方便大家使用,提供天翼云盘下载,地址为:https://cloud.189.cn/t/bQFJBb7NNbuq (访问码:ple3)

### 使用 Docker 安装 MySQL 8 教程 #### 查找并拉取 MySQL 8 镜像 为了安装 MySQL 8,首先需要从 Docker Hub 获取相应的镜像。可以通过 `docker search` 命令来浏览可用的 MySQL 版本[^1]。 ```bash docker search mysql ``` 对于特定版本的需求,比如 MySQL 8.0.32,则可以直接指定版本号进行下载: ```bash docker pull mysql:8.0.32 ``` 如果不指明具体标签,默认会下载最新的稳定版[^3]。 #### 创建与配置容器 在成功获取所需镜像之后,下一步就是基于该镜像启动一个新的容器实例。这里提供了一个基本的例子用于创建一个名为 `mysql-container` 的容器,并映射主机端口 3306 到容器内部的服务端口,同时设置 root 用户密码为 'your_password_here': ```bash docker run -d \ --name=mysql-container \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=your_password_here \ mysql:8.0.32 ``` 此命令中的 `-d` 参数表示以后台模式运行容器;而 `-e` 后面跟随的是环境变量定义,在这里是用来设定数据库管理员账户(`root`)初始登录凭证[^5]。 #### 访问和管理 MySQL 数据库 一旦容器正常工作起来后,就可以利用如下指令进入正在运行着 MySQL 实例的 Bash 终端环境中执行 SQL 查询或者其他维护操作了: ```bash docker exec -it mysql-container bash ``` 另外,也可以通过官方推荐的方式连接到 MySQL Server: ```bash docker exec -it mysql-container mysql -uroot -pyour_password_here ``` 这允许用户直接交互式地访问新建立好的 MySQL 数据库服务[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

angushine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值