前言
本文主要介绍 Debian 如何安装 MySQL 5.7 数据库,适用于 Debian 10 、Debian 11。
环境说明
准备工作
1 2 3 4 5
| sudo dpkg-query -l | grep mysql
sudo apt-get remove xxxx
|
MySQL 服务安装
下载安装包
在 MySQL 官网 下载 5.7 版本的安装包,例如 mysql-server_5.7.42-1debian10_amd64.deb-bundle.tar
,点击 查看图解说明。
1 2 3 4 5 6 7 8
| wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.42-1debian10_amd64.deb-bundle.tar
tar -xvf mysql-server_5.7.42-1debian10_amd64.deb-bundle.tar
rm -rf mysql-server_5.7.42-1debian10_amd64.deb-bundle.tar
|
兼容性说明
值得一提的是,MySQL 官网 5.7 版本只有 Debian 10 的,没有 Debian 11,但 Debian 11 可以直接使用 Debian 10 的安装包。
依赖软件安装
1
| sudo apt install psmisc libaio1 libnuma1 libatomic1 libmecab2 perl
|
MySQL 安装
特别注意
必须按照以下顺序依次安装各个 MySQL 软件包。
安装基础组件
1 2 3 4 5 6 7
| sudo dpkg -i mysql-common_5.7.42-1debian10_amd64.deb
sudo dpkg -i libmysqlclient20_5.7.42-1debian10_amd64.deb
sudo dpkg -i libmysqlclient-dev_5.7.42-1debian10_amd64.deb
sudo dpkg -i libmysqld-dev_5.7.42-1debian10_amd64.deb
|
安装客户端
1 2 3
| sudo dpkg -i mysql-community-client_5.7.42-1debian10_amd64.deb
sudo dpkg -i mysql-client_5.7.42-1debian10_amd64.deb
|
安装服务端
1 2 3 4
| sudo dpkg -i mysql-community-server_5.7.42-1debian10_amd64.deb
sudo dpkg -i mysql-server_5.7.42-1debian10_amd64.deb
|
提示
如果在安装 MySQL 服务端的时候,提示缺少相关的依赖软件,那么可以执行 sudo apt --fix-broken install
命令修正安装过程。
MySQL 服务管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl status mysql
sudo systemctl stop mysql
sudo systemctl restart mysql
|
终端执行 systemctl status mysql
命令后,若输出以下的日志信息,则说明 MySQL 服务器正常运行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2023-08-12 15:52:46 UTC; 33min ago Process: 597 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Process: 649 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid (code=exited, status=0/SUCCESS) Main PID: 651 (mysqld) Tasks: 27 (limit: 19018) Memory: 219.9M CPU: 1.639s CGroup: /system.slice/mysql.service └─651 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
Aug 12 15:52:45 uatoption01 systemd[1]: Starting MySQL Community Server... Aug 12 15:52:46 uatoption01 systemd[1]: Started MySQL Community Server.
|
终端执行 mysql -h localhost -u root -p
命令,并输入密码后,若能登录 MySQL 数据库,则说明客户端成功连接 MySQL 服务器。
MySQL 性能优化
更改最大打开文件描述符数
提示
关于更改最大打开文件描述符数的详细教程,可以看 这里。
系统最大打开文件描述符数
1 2 3 4 5 6 7 8 9 10 11 12 13
| sudo vim /etc/security/limits.conf
* soft nofile 1048576 * hard nofile 1048576
sudo vim /etc/sysctl.conf
fs.file-max = 1048576
sudo reboot
|
1 2 3
| ulimit -n
sudo sysctl fs.file-max
|
MySQL 最大打开文件描述符数
- 编辑 MySQL 系统服务的配置文件,更改
LimitNOFILE
的参数值
1 2 3
| sudo vim /lib/systemd/system/mysql.service
LimitNOFILE=1048576
|
1
| sudo systemctl daemon-reload
|
1
| sudo systemctl restart mysql
|
- 验证生效,在输出结果中查看
Max open files
的显示值
1
| sudo cat /proc/`pidof mysqld`/limits
|
常见问题
无法远程连接 MySQL
在默认情况下,MySQL 是不支持远程连接的,可以按照以下步骤实现远程连接。
第一步,配置 MySQL 支持远程连接
通过 sudo netstat -anp|grep 3306
命令查看 MySQL 占用的端口,可以得到以下信息
1
| tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 658/mysqld
|
编辑 MySQL 的配置文件,将 bind-address
的配置内容注释掉,然后重启 MySQL 服务
1 2 3 4 5 6 7
| sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
sudo systemctl restart mysql
|
MySQL 服务重启后,再次执行 sudo netstat -anp|grep 3306
命令,可以得到以下信息
1
| tcp6 0 0 :::3306 :::* LISTEN 658/mysqld
|
第二步,创建新的用户,并授权用户远程访问特定的数据库
1 2 3 4 5
| CREATE USER 'clay'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON my_db.* TO 'clay'@'%';
FLUSH PRIVILEGES;
|
授权 Root 用户远程登录
- 若希望授权
root
用户远程访问所有数据库(慎重考虑),可以执行以下 MySQL 命令。 - 值得一提的是,考虑到数据库安全问题,不建议授予
root
远程登录的权限,这可以降低数据库被攻击的风险。
1 2 3
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
|
特别注意
按照上述步骤进行配置后,若 MySQL 依旧无法实现远程访问,那么请检查系统的防火墙是否开放了 3306
端口。
MySQL 配置文件的位置
MySQL 安装完成后,各个配置文件的位置如下:
1 2 3 4 5
| PID 文件: /var/run/mysqld/mysqld.pid 配置文件: /etc/mysql/mysql.conf.d/mysqld.cnf 数据目录: /var/lib/mysql 日志文件: /var/log/mysql/error.log 服务启动脚本: /lib/systemd/system/mysql.service
|
参考资料