给 Linux 安装 MySQL 数据库

三葉Leaves Author

基于Ubuntu ,逐步示例配置一个 MySQL 数据库

目标1:安装 MySQL

命令:

1
sudo apt install mysql-server -y

如果你的 apt 软件源太旧,那可以直接使用官方的配置包:

  1. 安装 mysql apt 配置包
1
2
wget https://dev.mysql.com/get/mysql-apt-config_0.8.17-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.17-1_all.deb
  1. 更新索引
1
sudo apt update -y
  1. 再次尝试安装
1
sudo apt install mysql-server -y

目标2:远程连接到数据库

下面的操作如果遇到了问题别慌,可以先操作 [[#如果遇到问题:|解决连接失败的问题]] 章节的内容

修改 mysql 的配置文件

默认情况 mysql 只会接受来自本地的请求,我们需要去改他的配置文件:

1
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

找到 bind-address 这一行,默认情况下是绑定到 127.0.0.1。你可以将其更改为 0.0.0.0,让 MySQL 监听所有的网络接口,或者将其设置为服务器的外部 IP 地址:

1
bind-address = 0.0.0.0

然后以root身份登录到 mysql :

1
mysql -u root -p

此时我们创建一个新用户执行权限授予操作(root身份容易出问题),
⚠️ 注意替换掉里面的newusernewpassword

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

通过 IDE 连接

现在很多 IDE 内置此功能,这能让我们在进行项目开发的时候,很方便的执行 sql 语句,就以 JetbrainsGoland为例(Intellij IDEAvscode等同理):
点击右侧的数据库按钮添加数据源(没有的话自行去设置里排查):

在Goland里添加数据源
在Goland里添加数据源

完事了我们把主机用户名以及密码填一下。
如果你本身利用了 IDE 的远程开发功能,那么主机可以就填 localhost 即可,否则,请填写服务器的公网 ip;用户名和密码就是刚才设置的:

可以点一下下面蓝色的小字:“测试连接”,来解决可能的潜在报错。
如果一切正常,我们就能进入数据库的查询控制台了:

mysql 的 console
mysql 的 console

通过 ssh client 连接(可选):

我这里就只介绍 Linux 的方法,Windows 的话更推荐用上面的 IDE 连接,实在想用终端的话,大概步骤就是去 MySQL 官网下载页面 下载安装,然后配置环境变量后,即可在终端使用。

  1. 安装 ssh client
1
sudo apt install mysql-client
  1. 远程连接:
    假设你要连接的 MySQL 服务器的 IP 地址是 192.168.1.100,MySQL 用户名是 root,密码是 password,你可以使用以下命令远程连接到 MySQL:
1
mysql -h 192.168.1.100 -u root -p
  • -h 192.168.1.100:指定远程 MySQL 服务器的 IP 地址。
  • -u root:指定 MySQL 用户名(例如 root)。
  • -p:提示输入密码。
  1. 其他选项:
  • 指定端口:
    如果 MySQL 服务器使用了非默认端口(默认是 3306),可以通过 -P 选项指定端口(假设你用了3307):
1
mysql -h 192.168.1.100 -P 3307 -u root -p
  • 使用 ssl:
    使用以下命令来指定证书文件
1
mysql -h 192.168.1.100 -u root -p --ssl-ca=/path/to/ca-cert.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem

如果遇到问题:

mysql 是否正常工作?

MySQL 使用的是 3306 端口,要远程连接,先保证这个端口被放行。
使用如下命令查看 mysql 是否正常工作:

1
sudo systemctl status mysql

如果出现端口被占用的情况,可以查看当前端口使用情况,检查是否出现 3306 端口:

1
ss -ntl

或者:

1
sudo lsof -i -n -P | grep LISTEN

解决掉 3306 的占用后,可以使用:

1
sudo systemctl restart mysql

重启一下 MySQL

确认端口正常工作以后,还要兼顾防火墙策略。

是不是防火墙是否拦截了?

系统的内部防火墙:

确保防火墙没有阻止 3306 端口。主要检查 iptablesufwSELinuxfirewalld来检查防火墙规则。

  • 对于 iptables
1
sudo iptables -L -n | grep 3306

如果发现 3306 端口被阻止,可以使用以下命令开放该端口:

1
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
  • 对于 ufw
    暂时禁用 ufw 来排查问题:
1
sudo ufw disable
  • 对于 firewalld(如果你使用的是 firewalld):
    查看防火墙规则:
1
sudo firewall-cmd --list-all

如果没有看到 3306 端口,使用以下命令开放它:

1
sudo firewall-cmd --add-port=3306/tcp --permanent sudo firewall-cmd --reload
  • 对于 SELinux
    检查 SELinux 的状态:
1
sestatus

临时将 SELinux 设置为宽松模式,来排除来自于此的影响:

1
sudo setenforce 0

如果这样解决了问题,你可以考虑调整 SELinux 策略来允许 MySQL 访问该端口。

你服务器提供商设置的外部防火墙:

像阿里云,腾讯云,ucloud这些服务器提供商,默认也会设置外部防火墙拦截端口(比如 ucloud ,就是基于 iptables 写了一些外部防火墙命令。
此时,你需要去服务器的网页控制台进行配置,以 ucloud 为例:

在 ucloud 里配置防火墙
在 ucloud 里配置防火墙

红圈可以看到 ucloud 也提醒你了,不要去用内部的防火墙。我这里为了测试把外部防火墙端口全开放了,等服务配好以后再把安全策略改回来

在服务器提供商处放行端口
在服务器提供商处放行端口

目标3:执行一条 sql 语句:

这里我们执行一条创建数据库的语句(比如我创建一个名为 MyPapers 的数据库)

1
CREATE DATABASE MyPapers;

创建成功后,还可以在 IDE 的这个位置选择要使用的数据库,这相当于 sql 里的 USE DatabaseName

选择要使用的数据库
选择要使用的数据库

执行成功,大功告成。

  • 标题: 给 Linux 安装 MySQL 数据库
  • 作者: 三葉Leaves
  • 创建于 : 2024-12-04 00:00:00
  • 更新于 : 2025-01-05 18:48:33
  • 链接: https://kiss1314.top/b9447796f9ad/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论