【转】linux安装MySQL
2024-12-09 11:13:16

关于在linux安装MySQL,我个人推荐使用Dcoker安装,流程比用原生手段安装更简单。

使用Docker之后,安装流程被简化了很多,简单易操作,也可以用1panel的图形化点击部署,很简单好用。

正文

如果之前没有安装Docker的,推荐完整流程参考:从安装Docker到打包迁移MySQL的完整指南这篇文档。

先安装一下Docker,这篇文章记录的比较详细。

本文仅截取部署MySQL的部分,主要是用Docker在服务器上部署MySQL的流程。

用Docker部署MySQL

MySQL是一种流行的开源关系数据库管理系统。

在Docker中部署MySQL非常简单。

以下步骤将引导你如何在Docker中运行MySQL容器。

拉取MySQL镜像

为了加速镜像的下载速度,建议使用国内的镜像源。以下是从DaoCloud镜像源拉取MySQL官方镜像的命令:

1
sudo docker pull daocloud.io/library/mysql:8.0

千万千万不要使用下面命令。

1
sudo docker pull mysql:8.0

因为有些服务器禁止连接外网,所以导致你不能从hub拿到镜像下载地址,导致pull失败。

比如政务内网环境,那么此时就只能是如此操作。

运行MySQL容器

使用拉取的MySQL镜像启动一个容器,并将MySQL的3306端口映射到主机的3306端口,以便外部访问。

1
sudo docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:8.0
参数说明
  • --name mysql-container:指定容器名称为mysql-container
  • -e MYSQL_ROOT_PASSWORD=my-secret-pw:设置MySQL的root用户密码为my-secret-pw
  • -p 3306:3306:将容器内的3306端口映射到主机的3306端口。
  • -d mysql:8.0:在后台运行MySQL 8.0镜像。

配置MySQL允许远程访问

进入MySQL容器,允许root用户从任意主机访问数据库。

1
sudo docker exec -it mysql-container mysql -uroot -p

在MySQL命令行中,运行以下命令:

1
2
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'my-secret-pw';
FLUSH PRIVILEGES;

如果你希望创建一个新用户以用于远程访问,可以运行以下命令:

1
2
3
CREATE USER 'newuser'@'%' IDENTIFIED BY 'userpassword';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

配置my.cnf

记得在目录/var/lib/docker/volumes/mysql-data/_data/中,添加一个my.cnf

my.cnf的文件,输入如下内容即可。

1
2
[mysqld]
bind-address = 自己服务器的ip地址

防火墙配置(如适用)

如果你的服务器有防火墙,需要确保3306端口对外开放。

1
2
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

当然,这是用命令的方式,如果你使用的是腾讯云或者阿里云这种云服务器,是有端口配置的协议的。

有这种云服务器,这种事情就简单很多了。

你可以直接在防火墙的配置中,打开端口配置,把3306的端口打开就可以。

结语

这个流程还不完整,我可能测试的还不够完整,所以文档中应该有所缺漏。

不过,只要学习独立开发,后续必然还会再其他云服务器上部署项目,这个流程应该会被持续完善。

后续持续完善该部署流程,也欢迎大家提意见。

参考

从安装Docker到打包迁移MySQL的完整指南