ubuntu docker安装mysql教程,并开启远程访问和开机自启

注意:确保docker能正常拉取镜像容器:

docker安装可以见我另一篇博客:ubuntu安装docker教程--包括修改镜像源-优快云博客

1、创建本地目录用于存储 MySQL 数据和日志

在宿主机上创建两个目录,一个用于存放 MySQL 数据,另一个用于存放日志文件。

mkdir -p /path/mysql/data      

# 注意: /path/mysql/data 路径可以自己指定

mkdir -p /path/mysql/logs

2、启动 MySQL 容器

使用 docker run 命令启动 MySQL 容器,并将端口映射为 3306,同时将数据和日志映射到本地磁盘。

注意:我这里指定的是mysql8.0的版本,不指定的话,就会安装最新版,9.0以上的,最新版的设置比较麻烦,8.0好设置一些!mysql8小版本应该是通用的

docker run -d \
  --name mysql \
  -e MYSQL_ROOT_PASSWORD=root \
  -p 3306:3306 \
  -v /path/mysql/data:/var/lib/mysql \
  -v /path/mysql/logs:/var/log/mysql \
  mysql:8.0

3、配置 MySQL 以允许远程访问   

MySQL 默认只允许本地访问。您需要修改 MySQL 配置以允许远程访问:

3.1、进入 MySQL 容器:

docker exec -it mysql mysql -u root -p

3.2、允许 root 用户从所有主机访问 MySQL

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

FLUSH PRIVILEGES;

3.3、为所有网络启用 MySQL 远程访问:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

4、配置 MySQL 容器网络,使其他容器可以访问

为了使其他 Docker 容器(例如 Java 应用)能够访问 MySQL 数据库,您需要将它们置于同一个 Docker 网络中。

4.1、创建一个 Docker 网络

docker network create my-network

4.2、将 MySQL 容器连接到该网络

docker network connect my-network mysql

可以跳过4.3步骤

4.3、当运行其他容器(例如 Java 应用)时,可以将它们连接到相同的网络,并使用 mysql 作为数据库的主机名。例如:

docker run -d --name java-app --network my-network my-java-image

这样,您的 Java 应用可以通过主机名 mysql 访问 MySQL 数据库。

5、验证远程访问

您可以从外部机器连接到 MySQL,使用 mysql-client 或其他工具:

mysql -u root -p -h <your-host-ip> -P 3306

是您宿主机的 IP 地址,3306是映射的端口。

注意:如果需要在其他机器上访问 MySQL,请确保宿主机的防火墙允许3306 端口的连接。或者关闭虚拟机防火墙。

6、设置mysql开机自启

先设置docker开机自启

systemctl enable docker

设置mysql开机自启

docker update mysql --restart=always;

7、控制台shell  mysql中显示中

set character_set_client = utf8;
set character_set_results = utf8;
set character_set_connection = utf8;
-- 或者使用下面的命令同时统一编码(以下和以上命令选择一种执行即可,效果一样)
set names ‘utf8’;  (推荐)

补充一条:本机远程虚拟机

如果是使用ssh软件工具去连接虚拟机中的系统,比如ubuntu;

1、网络可以选择桥接,本机能够ping通虚拟机IP

2、需要系统安装ssh的服务,并开放22端口;

1、打开终端并输入以下命令来安装openssh-server:
sudo apt install openssh-server

2、确保Ubuntu防火墙允许SSH连接,可以使用命令:
sudo ufw allow 22

3、启动SSH服务:
sudo systemctl start ssh

4、检查SSH服务状态:
sudo systemctl status ssh

5、修改SSH配置文件(可选):
sudo nano /etc/ssh/sshd_config

一般只需要做到第2步;

或者你直接可以禁用掉防火墙:

1、停止防火墙服务:(3选1)
sudo systemctl stop ufw  
或  sudo ufw disable 
或 sudo systemctl stop iptables 


2、禁用防火墙服务的自动启动:(2选1)
sudo systemctl disable ufw 
或 sudo systemctl disable iptables

3、重启系统,以确保防火墙不会在系统启动时重新启用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值