基于 Docker 安装 MySQL

本文详细介绍了如何使用Docker安装和配置MySQL数据库。包括搜索、拉取MySQL镜像,启动MySQL容器,连接数据库,查看运行状态及管理容器等操作。

Docker 安装 MySQL

查看MySQL镜像

[root@izbp13xko46hud9vfr5s94z ~]# docker search mysql 
NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                                                  MySQL is a widely used, open-source relation…   6353                [OK]                
mariadb                                                MariaDB is a community-developed fork of MyS…   1999                [OK]                
mysql/mysql-server                                     Optimized MySQL Server Docker images. Create…   458                                     [OK]
percona                                                Percona Server is a fork of the MySQL relati…   343                 [OK]                
zabbix/zabbix-server-mysql                             Zabbix Server with MySQL database support       101                                     [OK]
hypriot/rpi-mysql                                      RPi-compatible Docker Image with Mysql          87                                      
centurylink/mysql                                      Image containing mysql. Optimized to be link…   60                                      [OK]
zabbix/zabbix-web-nginx-mysql                          Zabbix frontend based on Nginx web-server wi…   54                                      [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5   ubuntu-16-nginx-php-phpmyadmin-mysql-5          36                                      [OK]
tutum/mysql                                            Base docker image to run a MySQL database se…   32                                      
centos/mysql-57-centos7                                MySQL 5.7 SQL database server                   28                                      
mysql/mysql-cluster                                    Experimental MySQL Cluster Docker images. Cr…   27                                      
schickling/mysql-backup-s3                             Backup MySQL to S3 (supports periodic backup…   19                                      [OK]
bitnami/mysql                                          Bitnami MySQL Docker Image                      15                                      [OK]
linuxserver/mysql                                      A Mysql container, brought to you by LinuxSe…   14                                      
zabbix/zabbix-proxy-mysql                              Zabbix proxy with MySQL database support        13                                      [OK]
centos/mysql-56-centos7                                MySQL 5.6 SQL database server                   8                                       
openshift/mysql-55-centos7                             DEPRECATED: A Centos7 based MySQL v5.5 image…   6                                       
circleci/mysql                                         MySQL is a widely used, open-source relation…   5                                       
dsteinkopf/backup-all-mysql                            backup all DBs in a mysql server                3                                       [OK]
mysql/mysql-router                                     MySQL Router provides transparent routing be…   2                                       
openzipkin/zipkin-mysql                                Mirror of https://quay.io/repository/openzip…   1                                       
cloudposse/mysql                                       Improved `mysql` service with support for `m…   0                                       [OK]
cloudfoundry/cf-mysql-ci                               Image used in CI of cf-mysql-release            0                                       
ansibleplaybookbundle/mysql-apb                        An APB which deploys RHSCL MySQL                0                                       [OK]

拉取MySQL镜像

[root@izbp13xko46hud9vfr5s94z ~]# docker pull mysql 
Using default tag: latest
latest: Pulling from library/mysql
f2aa67a397c4: Pull complete 
1accf44cb7e0: Pull complete 
2d830ea9fa68: Pull complete 
740584693b89: Pull complete 
4d620357ec48: Pull complete 
ac3b7158d73d: Pull complete 
a48d784ee503: Pull complete 
f122eadb2640: Pull complete 
3df40c552a96: Pull complete 
da7d77a8ed28: Pull complete 
f03c5af3b206: Pull complete 
54dd1949fa0f: Pull complete 
Digest: sha256:d60c13a2bfdbbeb9cf1c84fd3cb0a1577b2bbaeec11e44bf345f4da90586e9e1
Status: Downloaded newer image for mysql:latest
[root@izbp13xko46hud9vfr5s94z ~]#

运行MySQL

启动一个MySQL实例

[root@izbp13xko46hud9vfr5s94z ~]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
b04ecb7714b0bec7d6169af9ffdef79b80157122a24c9f1e811ccc835a7ce59b
[root@izbp13xko46hud9vfr5s94z ~]#

连接MySQL数据库

命令:docker exec -it 356c999b5cd0 bash
356c999b5cd0 是当前MySQL实例的容器ID,也可以通过容器名称来连接
示例:

[root@izbp13xko46hud9vfr5s94z ~]# docker exec -it 356c999b5cd0 bash 
root@356c999b5cd0:/# show databases;
bash: show: command not found
root@356c999b5cd0:/# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.11 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql>

查看运行中的MySQL实例

[root@izbp13xko46hud9vfr5s94z ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
b04ecb7714b0        mysql               "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp            mysql
[root@izbp13xko46hud9vfr5s94z ~]#

查看MySQL运行实例的进程信息

  • 通过docker top mysql查看
[root@izbp13xko46hud9vfr5s94z ~]# docker top mysql 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
polkitd             13154               13129               0                   14:03               ?                   00:00:00            mysqld
[root@izbp13xko46hud9vfr5s94z ~]# 
  • 通过ps -ef | grep mysql查看
[root@izbp13xko46hud9vfr5s94z ~]# ps -ef | grep mysql 
polkitd  13154 13129  0 14:03 ?        00:00:01 mysqld
root     13398 12942  0 14:06 pts/0    00:00:00 grep --color=auto mysql
[root@izbp13xko46hud9vfr5s94z ~]#

重启MySQL实例

  • 根据容器名称重启
[root@izbp13xko46hud9vfr5s94z ~]# docker restart mysql 
mysql
[root@izbp13xko46hud9vfr5s94z ~]#

mysql 需要启动MySQL实例时,通过--name来指定

  • 根据容器ID重启
[root@izbp13xko46hud9vfr5s94z ~]# docker restart b04ecb7714b0
b04ecb7714b0
[root@izbp13xko46hud9vfr5s94z ~]#

关闭当前MySQL容器实例

[root@izbp13xko46hud9vfr5s94z ~]# docker stop b04ecb7714b0
b04ecb7714b0
[root@izbp13xko46hud9vfr5s94z ~]#

根据容器ID杀死MySQL容器实例

[root@izbp13xko46hud9vfr5s94z ~]# docker kill -s KILL b04ecb7714b0
b04ecb7714b0
[root@izbp13xko46hud9vfr5s94z ~]#

移除MySQL容器实例并删除容器挂载的数据卷

[root@izbp13xko46hud9vfr5s94z ~]# docker rm -f -v b04ecb7714b0
b04ecb7714b0
[root@izbp13xko46hud9vfr5s94z ~]# docker ps -a 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
0d622f7cd0a4        redis               "docker-entrypoint.s…"   5 days ago          Up 5 days           6379/tcp            some-redis
[root@izbp13xko46hud9vfr5s94z ~]#

通过docker rm -f -v移除MySQL实例镜像后,通过docker ps -a是无法查看到MySQL实例镜像的。

参考链接:https://github.com/docker-library/docs/tree/master/mysql
http://www.runoob.com/docker/docker-install-mysql.html
https://www.cnblogs.com/baolong/p/5763412.html

在 AlmaLinux 系统上基于 Docker 安装 MySQL 数据库,可以通过编写 `docker-compose.yml` 文件来实现。以下是一个完整的安装流程: ### 1. 新建文件目录 首先创建一个用于存放配置文件和数据的目录结构: ```bash mkdir -p /home/docker/mysql cd /home/docker/mysql ``` ### 2. 新建 docker-compose.yml 文件 使用文本编辑器创建并编辑 `docker-compose.yml` 文件: ```bash vim docker-compose.yml ``` ### 3. 编写 docker-compose.yml 内容 将以下内容粘贴到 `docker-compose.yml` 文件中,根据需要调整数据库用户名、密码等信息[^3]: ```yaml version: '3' services: mysql: image: mysql:8.0 container_name: mysql restart: always ports: - "3306:3306" volumes: - ./data:/var/lib/mysql - ./my.cnf:/etc/my.cnf environment: MYSQL_ROOT_PASSWORD: Password1 MYSQL_DATABASE: mydatabase MYSQL_USER: myuser MYSQL_PASSWORD: mypassword ``` ### 4. 创建 my.cnf 配置文件 在当前目录下新建 `my.cnf` 文件以自定义 MySQL 配置: ```bash vim my.cnf ``` 可以添加如下基本配置: ```ini [mysqld] bind-address = 0.0.0.0 max_connections = 200 innodb_file_per_table = 1 innodb_buffer_pool_size = 256M ``` ### 5. 赋予权限 确保挂载的数据目录具有正确的权限: ```bash chmod -R 777 data ``` ### 6. 启动容器 运行以下命令启动 MySQL 容器: ```bash docker-compose up -d ``` 此命令会下载指定版本的 MySQL 镜像(如未本地存在),并以后台模式启动容器。 ### 7. 停止或删除容器(可选) 如果需要停止或删除容器,可以使用以下命令: ```bash docker-compose down ``` ### 8. 访问 MySQL 通过 MySQL 客户端或其他工具连接至数据库: ```bash mysql -h 127.0.0.1 -P 3306 -u myuser -p ``` 输入设置的密码即可登录。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值