MySQL----使用Docker安装Mysql数据库

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: MySQL----使用Docker安装Mysql数据库

(1)搜索mysql镜像

[root@iZbp1flzt6x7pxmxfhmxeeZ jdk1.8.0_301]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11731     [OK]
mariadb                           MariaDB Server is a high performing open sou…   4472      [OK]
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   875                  [OK]
phpmyadmin                        phpMyAdmin - A web interface for MySQL and M…   381       [OK]
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   92
mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   89
centurylink/mysql                 Image containing mysql. Optimized to be link…   59                   [OK]
databack/mysql-backup             Back up mysql databases to... anywhere!         53
prom/mysqld-exporter                                                              43                   [OK]
deitch/mysql-backup               REPLACED! Please use http://hub.docker.com/r…   41                   [OK]
tutum/mysql                       Base docker image to run a MySQL database se…   35
linuxserver/mysql                 A Mysql container, brought to you by LinuxSe…   34
schickling/mysql-backup-s3        Backup MySQL to S3 (supports periodic backup…   31                   [OK]
mysql/mysql-router                MySQL Router provides transparent routing be…   23
centos/mysql-56-centos7           MySQL 5.6 SQL database server                   21
arey/mysql-client                 Run a MySQL client from a docker container      19                   [OK]
fradelg/mysql-cron-backup         MySQL/MariaDB database backup using cron tas…   16                   [OK]
genschsa/mysql-employees          MySQL Employee Sample Database                  8                    [OK]
yloeffler/mysql-backup            This image runs mysqldump to backup data usi…   7                    [OK]
openshift/mysql-55-centos7        DEPRECATED: A Centos7 based MySQL v5.5 image…   6
devilbox/mysql                    Retagged MySQL, MariaDB and PerconaDB offici…   3
ansibleplaybookbundle/mysql-apb   An APB which deploys RHSCL MySQL                3                    [OK]
centos/mysql-80-centos7           MySQL 8.0 SQL database server                   2
jelastic/mysql                    An image of the MySQL database server mainta…   2
widdpim/mysql-client              Dockerized MySQL Client (5.7) including Curl…   1                    [OK]
[root@iZbp1flzt6x7pxmxfhmxeeZ jdk1.8.0_301]#

(2)下载镜像

[root@iZbp1flzt6x7pxmxfhmxeeZ jdk1.8.0_301]# docker pull mysql:5.7
5.7: Pulling from library/mysql
a10c77af2613: Pull complete
b76a7eb51ffd: Pull complete
258223f927e4: Pull complete
2d2c75386df9: Pull complete
63e92e4046c9: Pull complete
f5845c731544: Pull complete
bd0401123a9b: Pull complete
2724b2da64fd: Pull complete
d10a7e9e325c: Pull complete
1c5fd9c3683d: Pull complete
2e35f83a12e9: Pull complete
Digest: sha256:7a3a7b7a29e6fbff433c339fc52245435fa2c308586481f2f92ab1df239d6a29
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
[root@iZbp1flzt6x7pxmxfhmxeeZ jdk1.8.0_301]#

(3)启动docker

docker run -d -p 3306:3306 --privileged=true -v /docker/mysql/etc/my.cnf:/etc/my.cnf -v /docker/mysql/etc/mysql:/etc/mysql -v /docker/mysql/var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxxxxxxx --name mysql mysql:5.7 --character-set-server=utf8 --collation-server=utf8_general_ci

参数说明:

  • -d  表示后台运行
  • -p  表示容器内部端口和服务器端口映射关联
  • --privileged=true 设值MySQL 的root用户权限, 否则外部不能使用root用户登陆
  • -v /docker/mysql/etc/my.cnf:/etc/my.cnf将docker中的/etc/my.cnf配置映射到服务器中的/docker/mysql/etc/my.cnf路径
  • -v /docker/mysql/etc/mysql:/etc/mysql 同上,将docker中/etc/mysql/中的配置映射到服务器中的/docker/mysql/etc/mysql
  • -v /docker/mysql/var/lib/mysql:/var/lib/mysql  同上,映射数据库的数据目录, 避免以后docker删除重新运行MySQL容器时数据丢失
  • -e MYSQL_ROOT_PASSWORD=xxxxxxx   设置MySQL数据库root用户的密码
  • --name mysql     设值容器名称为mysql
  • mysql:5.7  表示从docker镜像mysql:5.7中启动一个容器
  • --character-set-server=utf8 设置编码格式
  • --collation-server=utf8_general_ci 设值数据库默认编码

(4)进入docker验证mysql数据库

[root@iZbp1flzt6x7pxmxfhmxeeZ jdk1.8.0_301]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                                                                             NAMES
4afca70d4674   mysql:5.7             "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                                              mysql
373b8eaed36f   jenkins/jenkins:lts   "/sbin/tini -- /usr/…"   8 days ago      Up 3 days      0.0.0.0:5000->5000/tcp, :::5000->5000/tcp, 50000/tcp, 0.0.0.0:8081->8080/tcp, :::8081->8080/tcp   myjenkins
1906e95db7ab   nginx                 "/docker-entrypoint.…"   7 weeks ago     Up 7 days      0.0.0.0:80->80/tcp, :::80->80/tcp                                                                 nginx
[root@iZbp1flzt6x7pxmxfhmxeeZ jdk1.8.0_301]# docker exec -it  4afca70d4674 bash
root@4afca70d4674:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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> exit
Bye
root@4afca70d4674:/# exit
exit
[root@iZbp1flzt6x7pxmxfhmxeeZ jdk1.8.0_301]#

(5)设置root用户可以远程链接mysql数据库

进入docker,登录mysql数据库后,执行如下命令即可(xxxxxx为数据库密码)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xxxxxxxx';
flush privileges;

[root@iZbp1flzt6x7pxmxfhmxeeZ jdk1.8.0_301]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                                                                             NAMES
4afca70d4674   mysql:5.7             "docker-entrypoint.s…"   17 minutes ago   Up 17 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                                              mysql
373b8eaed36f   jenkins/jenkins:lts   "/sbin/tini -- /usr/…"   8 days ago       Up 3 days       0.0.0.0:5000->5000/tcp, :::5000->5000/tcp, 50000/tcp, 0.0.0.0:8081->8080/tcp, :::8081->8080/tcp   myjenkins
1906e95db7ab   nginx                 "/docker-entrypoint.…"   7 weeks ago      Up 7 days       0.0.0.0:80->80/tcp, :::80->80/tcp                                                                 nginx
[root@iZbp1flzt6x7pxmxfhmxeeZ jdk1.8.0_301]# docker exec -it  4afca70d4674 bash
root@4afca70d4674:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xxxxxxxx';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql>

此时即可使用root用户远程连接了

(6)如不想对外暴露root用户远程连接,可以使用如下命令创建一个普通用户对外暴露

如下,暴露一个用户名为mysql的用户

GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY 'xxxxxxx' WITH GRANT OPTION;
flush privileges;

如:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY 'xxxxxxx' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql>

此时即可使用mysql用户远程连接了

(7)此时数据库编码并未支持中文,如果向此数据库写入中文数据,则会显示乱码,为解决这个问题,需要在mysql视图下执行如下命令:

SET NAMES 'utf8';
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
4月前
|
Ubuntu 关系型数据库 MySQL
MySQL源码编译安装
本文详细介绍了MySQL 8.0及8.4版本的源码编译安装全过程,涵盖用户创建、依赖安装、cmake配置、编译优化等步骤,并提供支持多Linux发行版的一键安装脚本,适用于定制化数据库部署需求。
1076 4
MySQL源码编译安装
|
4月前
|
Ubuntu 关系型数据库 MySQL
MySQL二进制包安装
本文详细介绍了在多种Linux系统上通过二进制包安装MySQL 8.0和8.4版本的完整过程,涵盖用户创建、glibc版本匹配、程序解压、环境变量配置、初始化数据库及服务启动等步骤,并提供支持多发行版的一键安装脚本,助力高效部署MySQL环境。
627 4
MySQL二进制包安装
|
4月前
|
安全 关系型数据库 MySQL
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
本文详细介绍在openSUSE系统上通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,包括下载地址、RPM包解压、GPG密钥导入、使用rpm或zypper命令安装及服务启动验证,涵盖初始密码获取与安全修改方法,适用于无网络环境下的MySQL部署。
570 3
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
|
4月前
|
关系型数据库 MySQL Linux
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
本文介绍了在openSUSE系统上通过SUSE资源库安装MySQL 8.0和8.4版本的完整步骤,包括配置国内镜像源、安装MySQL服务、启动并验证运行状态,以及修改初始密码等操作,适用于希望在SUSE系列系统中快速部署MySQL的用户。
477 3
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
|
4月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
668 5
|
4月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
796 4
|
4月前
|
Ubuntu 关系型数据库 MySQL
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
本文详细介绍了在Ubuntu 24.04、22.04、20.04及Debian 12系统上,通过离线DEB包安装MySQL 8.0和8.4版本的完整步骤。涵盖下载地址、依赖处理、dpkg安装顺序、配置方法及服务启动验证,确保用户可顺利部署MySQL数据库。
1897 0
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
|
4月前
|
运维 Ubuntu 关系型数据库
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
本文介绍了在Debian系列系统(如Ubuntu、Debian 11/12)中通过APT仓库安装MySQL 8.0和8.4版本的完整步骤,涵盖添加官方源、配置国内镜像、安装服务及初始化设置,并验证运行状态,适用于各类Linux运维场景。
1585 0
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
|
4月前
|
Oracle 关系型数据库 MySQL
MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)
本文详细介绍在Rocky、CentOS、AlmaLinux、openEuler等主流Linux系统上,通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,涵盖下载、依赖处理、rpm/yum安装、服务启动、密码设置等关键环节,适用于多种企业级环境部署需求。
1272 0
MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)
|
4月前
|
存储 关系型数据库 MySQL
MySQL介绍和MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)
MySQL是一款开源关系型数据库,高性能、易用、跨平台,支持多种存储引擎,广泛应用于Web开发、企业级应用等领域。本教程介绍其特点、架构及在主流Linux系统中的安装配置方法。
861 0
MySQL介绍和MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)