如果您是 mysql 的新手或希望快速轻松地安装 mysql 数据库的人,那么本文适合您,在本文中,我们将学习如何在 linux 中使用 docker 和 docker compose 设置 mysql。
让我们首先设置 docker 环境来启动 mysql 容器。
1. 安装 docker在启动 mysql docker 容器之前,您需要在您的机器上安装 docker 和 docker-compose。
您还可以参考下面给出的官方 docker 文档链接,了解如何设置 docker 和 docker compose。
https://docs.docker.com/engine/install/https://docs.docker.com/compose/install/您可以运行以下命令来检查您正在运行的 docker 和 docker-compose 版本。
$ docker --versiondocker version 20.10.11, build dea9396$ docker-compose --versiondocker-compose version 1.29.2, build unknown2. 下载 mysql docker 镜像前往docker hub获取mysql docker 镜像。重要的是您必须决定要运行的 mysql 版本。
运行以下命令将 mysql 映像从 docker hub 拉到您的机器上。
$ docker pull mysql:latest注意:没有必要使用标签“ latest”,默认情况下它会拉取最新的图像。
要检查图像是否在本地可用,您可以运行以下命令:
$ docker images mysql示例输出:
repository tag image id created sizemysql latest b05128b000dd 12 days ago 516mb现在图像已准备好启动容器。您也可以跳过此步骤并运行“ docker run”命令,如下一节所示,如果本地不可用,它将拉取映像。
3. 启动 mysql 容器运行以下命令来启动 mysql docker 容器:
$ docker run --name mysql -p 3306:3306 -v mysql_volume:/var/lib/mysql/ -d -e mysql_root_password=temp123 mysql
让我们分解上面的命令,看看每个标志的作用。
--name→ 为您的容器命名。如果您未指定此标志,docker 将分配一些随机生成的名称。-p→ 端口映射。mysql 将侦听端口,3306因此我们将端口 ( 3306→ 3306) 从您的主机映射到 docker 容器。主机端口不必是3306,它可以是任何可用的。netstat在您的本地机器上运行以下命令以检查容器启动后映射的端口是否正在侦听。
$ netstat -tlnup | grep -i 3306示例输出:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* listen 168870/docker-proxy tcp6 0 0 :::3306 :::* listen 168878/docker-proxy-v→ 将卷附加到容器。docker 的默认行为是一旦容器被移除就不会持久化数据,因此您将丢失所有数据。为了创建持久存储,我创建了名为“ mysql_volume”的卷。mysql 将数据存储在/var/lib/mysql/容器内,并在此处映射到 localhost 目录/var/lib/docker/volumes/mysql_volume1/_data,因此您的数据将是持久的。
-d→ 将以分离模式启动和运行容器。如果省略该-d标志,那么您将在终端中看到容器启动日志,您必须打开一个新的终端会话才能连接到容器。-e→ 环境变量。您必须使用以下任一参数设置 mysql root 用户密码。mysql_root_password → 使用此环境变量设置您自己的密码。mysql_allow_empty_password→ 将设置空白或空密码。你必须设置mysql_allow_empty_password=1.mysql_random_root_password→ 容器启动时会生成随机密码。您必须设置mysql_random_root_password=1生成随机密码。如果跳过此步骤,则会引发如下所示的错误。
4. 检查 mysql 容器状态您可以使用以下命令检查启动的容器状态:
$ docker ps示例输出:
container id image command created status ports namese1fb895f6f0f mysql docker-entrypoint.s... 3 minutes ago up 3 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql5.连接到mysql数据库运行以下命令连接到 mysql 容器。
$ docker exec -it mysql bashroot通过运行以下命令以用户身份连接到 mysql 数据库。就我而言,我已经通过mysql_root_password.
$ mysql -u root -p
如果您mysql_random_root_password=1在启动容器时使用过,那么您可以从日志中获取自动生成的密码。
$ docker logs$ docker logs mysql
自动生成的root密码会很长,不需要记住。您可以通过运行以下查询来重置 root 密码。
mysql> alter user 'root'@'localhost' identified by 'mysqlpassword';将密码“mysqlpassword”替换为您自己的密码。您还可以创建自己的用户并根据需要授予他权限。
6. 加载样本数据设置 mysql 的主要目的是加载一些数据并对其运行查询。有几种方法可以加载数据。我有一个名为“ load_data.sql”的示例文件,其中包含以下查询。
如果不存在足球,则创建数据库;
create database if not exists football;use football;create table if not exists players ( player_name varchar(16) not null, player_age int not null, player_club varchar(16) not null, player_country varchar(16) not null);insert into players values (messi,34,psg,argentina);insert into players values (ronaldo,36,manu,portugal);insert into players values (neymar,29,psg,brazil);insert into players values (kane,28,spurs,england);insert into players values (e hazard,30,madrid,belgium);第一种方法是使用“ docker cp”命令将数据从本地机器复制到 docker 容器。
$ docker cp load_data.sql mysql:/tmp$ docker exec -it mysql bash$ ls -l /tmp/现在您可以连接到 mysql 客户端并运行 source 命令或将文件重定向到 mysql 客户端。
$ mysql -u root -pmysql> source /tmp/load_data.sql或者
$ mysql -u root -p show databases;mysql> use football;mysql> show tables;mysql> select * from players;
第二种方法是.sql在运行docker exec命令时重定向文件。
$ docker exec -i mysql mysql -u root -p 3306/tcp,:::3306->3306/tcp, 33060/tcp8. 使用 mysql workbench 连接到 mysql 数据库到目前为止,我们已经看到了如何从容器内部使用 mysql 客户端连接到数据库。您还可以使用任何 gui 客户端(如 mysql workbench、dbeaver、heidi sql 等)连接到数据库。
无论您使用什么 gui 客户端,都要注意的重要一点是,启动容器时映射的端口是什么。
就我而言,我已经映射了localhost ( 3306) ->容器( 3306)。所以如果我必须建立到数据库的连接,我必须连接到localhost:3306或127.0.01:3306。
我使用 mysql workbench 作为我的 gui 客户端,如果您还没有在您的机器上安装 mysql workbench,那么您可以使用以下说明进行安装。
8.1. 在 linux 中安装 mysql workbench导航到官方站点下载包文件,您必须选择您的操作系统才能下载.deb或.rpm文件。
在下一步中,它会要求您登录或注册,您可以通过单击“不,谢谢,只需开始我的下载”选项跳过登录或注册。
在基于 debian 的系统上,安装 mysql workbench,如下所示:
$ cd$ sudo apt install ./mysql-workbench-community_8.0.27-1ubuntu21.04_amd64.deb在基于 rhel 的系统上,安装 mysql workbench,如下所示:
$ cd$ sudo dnf localinstall ./mysql-workbench-community-8.0.27-1.el8.x86_64.rpm安装完成后,您可以从菜单或破折号启动 mysql 工作台。
8.2. 连接到 mysql 数据库连接到在 docker 容器内运行的数据库,您应该尝试连接到localhost:3306或localhost:取决于您的容器的设置方式。
在连接到数据库之前,您可以按“测试连接”来检查 mysql workbench 是否能够成功连接到数据库实例。
现在您可以开始针对您创建的表运行查询。
9. 结论在本文中,我们简要了解了如何在 docker 中启动 mysql 容器的使用docker run和docker-compose方法,如果你想设置 mysql 用于测试或学习目的,docker 就足够了。
vivo X27采用零界全面屏和无孔设计实现了真正的无边缘
INDEMIND:2023,服务机器人能否“狂飙”?
卓越画质触手可及,中科创达Falcon画质解决方案正式发布
高通致命漏洞曝光 波及数十亿安卓设备
火星首个开源Linux系统以及飞行软件框架F Prime
Linux中如何使用Docker安装MySQL
国芯思辰|对标C4D40120D,1200V SiC肖特基二极管B2D40120HC1让车载充电机更高效
MSP-300-070-B-W-1压力传感器用于轮胎气密性试验系统
运动挂脖蓝牙耳机哪款好?性价比运动挂脖耳机推荐
看联想柳传志如何点评互联网大佬
沪士电子国内领先的通讯板企业,业绩拐点显现
凌力尔特发表LTC559x系列高动态范围双组下变频混频器
美国联邦航空管理局正在要求波音737NG飞机扩大检查范围
专为中小企业定制 ThinkPad R480助力企业快速发展
中国自研激光雷达 量产交付大交通
Redmi K20颜值爆表 4000mAh大电池和第7代屏幕指纹识别
易云系统云组态的优势特点
24
TE Connectivity推出新SOLARLOK连接器 安装快速简便
为什么车规级的芯片,就那么难做呢?