在Podman上部署mysql

本文主要接受如何通过容器安装mysql,基于CentOS 8,所以使用的是podman,而非Docker,Docker的安装可以参见这篇文章:安装Docker,podman的配置可以参见这篇文章:配置Podman

本文的安装整理自:MySql官网

1 安装

1.1 更新系统

sudo dnf makecache
sudo dnf upgrade
sudo dnf update

1.2 安装mysql 8.0

podman pull mysql/mysql-server:8.0

1.3 查看安装

podman images -a 

你应该看到如下内容:

1
2
REPOSITORY                                TAG   IMAGE ID       CREATED       SIZE
docker.io/mysql/mysql-server 8.0 a7a39f15d42d 3 weeks ago 391 MB

1.4 启动实例:

参照上一步获取到的镜像,创建一个实例,我们这里将会实例命名为mysql_devops,同时,这里在服务器上使用的是13306端口,映射到容器内部的依然是3306端口

1
2
podman volume create vo-mysql
podman run -d -it --restart=always --name=mysql_devops -v vo-mysql:/var/lib/mysql -e TZ=Asia/Shanghai -v /etc/localtime:/etc/localtime:ro -p 13306:3306 docker.io/mysql/mysql-server:8.0

查看效果:

podman ps -a

效果应该如下:

1
2
CONTAINER ID  IMAGE                                        COMMAND               CREATED        STATUS            PORTS                    NAMES
836b5ef6047e docker.io/mysql/mysql-server:8.0 /entrypoint.sh my... 4 seconds ago Up 3 seconds ago 0.0.0.0:13306->3306/tcp mysql_devops

一旦启动,会自动生成一个密码,查看密码:

1
podman logs mysql_devops 2>&1 | grep GENERATED

应该输出类似如下,如果没有输出,可以等10秒左右:

1
[Entrypoint] GENERATED ROOT PASSWORD: isegnaximMOJ0KlOhFEx)0Hugut

用这个密码尝试连接看看:

podman exec -it mysql_devops mysql -uroot -p

至此,mysql构建完毕。

接下来,需要做好授权访问;

2 授权访问:

2.1 root账号仅限本机访问,单独开设管理账号

ALTER USER 'root'@'localhost' IDENTIFIED BY 'rootmysql';

2.2 开设仅限独立应用访问的账号

例如,java应用的应用id是9999,我们就开通java_9999,密码使用:20190721

create user 'java_9999'@'%' identified by '20190721';
ALTER USER 'java_9999'@'%' IDENTIFIED WITH mysql_native_password BY '20190721';
GRANT ALL PRIVILEGES ON demo_user.* TO 'java_9999'@'%';
flush privileges;

3 备份数据

备份

1
mysqldump -h地址 -P端口 -u账号 -p密码 数据库名 > /opt/backup.sql

还原

1
mysql -h地址 -P端口 -u账号 -p密码 数据库名 < /opt/backup.sql