myfreax

如何在Debian 10安装MySQL

MySQL是最流行的开源关系数据库管理系统。它快速,易于使用,可扩展,并且是流行的LAMP和LEMP栈的组成部分

5 min read
By myfreax
如何在Debian 10安装MySQL
Debian 10安装MySQL

MySQL是最流行的开源关系数据库管理系统。它快速,易于使用,可扩展,并且是流行的LAMPLEMP栈的组成部分。

MySQL在默认的Debian存储库中不可用。 MariaDB是Debian 10中的默认数据库。

要将MySQL存储库添加到您的系统,请访问MySQL仓库下载页面并使用wget命令下载最新MySQL。

下载完成后,以root或者具有sudo权限的用户安装运行apt install命令安装本地deb软件包。

系统将显示配置菜单,从中可以选择要安装的MySQL版本。默认选中是MySQL 8.0。

如果要安装MySQL 5.7,可以使用键盘的方向键选择MySQL Server & Cluster (Currently selected: mysql-8.0),然后选择MySQL版本

我们将安装MySQL 8.0版。按Tab选择OK,然后按Enter。接下来与运行apt update更新软件包列表,然后安装MySQL server软件包。

wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb

sudo apt install ./mysql-apt-config_0.8.13-1_all.deb
sudo apt-key del A4A9 4068 76FC BD3C 4567  70C8 8C71 8D3B 5072 E1F5    
sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 467B942D3A79BD29
sudo apt update
sudo apt install mysql-server

如果你遇到错误E: Package 'mysql-server' has no installation candidate或者E: The repository 'http://repo.mysql.com/apt/debian buster InRelease' is not signed.。

请不要忘记运行两个apt-key命令,这是因为MySQL的签名已经过期,导致签名失败,Debian将不允许安装MySQL。

W: GPG error: http://repo.mysql.com/apt/debian buster InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29E: The repository 'http://repo.mysql.com/apt/debian buster InRelease' is not signed.N: Updating from such a repository can't be done securely, and is therefore disabled by default.N: See apt-secure(8) manpage for repository creation and user configuration details

安装程序将要求您设置MySQL root密码。现在不要设置密码,将其保留为空白,我们将在下一部分中进行设置。

接下来,您将看到一条消息,通知设置MySQL 8身份验证插件。选择默认的MySQL 8身份验证插件即可,以后可以随时修改。

安装完成后,MySQL将作为systemd服务自动启动,您可以通过运行命令sudo systemctl status mysql查看mysql服务的状态

sudo systemctl status mysql
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
   Active: active (running) since Fri 2019-07-26 13:23:25 PDT; 37s ago
   ...

配置MySQL

当MySQL安装完成后,你可能会想运行命令mysql -u root -p登录到MySQL服务器。

如果你登录到Ubuntu的用户不是root用户你将不能访问MySQL服务器。如果你尝试使用密码登录也将被拒绝连接,MySQL root用户默认是没有密码。

你将会收到类似于这样的消息(28000): Access denied for user 'root'@'localhost' (using password: YES)或者ERROR 1045 (28000): Access denied for user 'root'@'localhost'。

这是因为在MySQL 8.0,对root用户使用auth_socket插件进行身份验证。auth_socket插件仅对从localhost连接到Unix socket文件用户进行身份验证。

这意味着您无法通过提供密码来以root用户连接到MySQL服务器。但你可以通过命令sudo mysql连接到MySQL服务器。

sudo mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql>

如果您要使用外部程序,例如phpMyAdmin。以root用户连接到MySQL服务器,则有两个选择。

第一个是将身份验证方法从auth_socket更改为mysql_native_password。您可以通过运行ALTER USER SQL语句命令来做到这一点。

第二个选项是创建一个新的专用管理用户,该用户可以访问所有数据库。我们将使用第一选项,修改root用户的身份验证插件并修改root密码。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;

现在你可以运行命令mysql -u root -p登录到MySQL服务器,MySQL将会提示你输入密码,密码是你在SQL设置的密码。

如果你需要配置MySQL用户的远程访问,可参考我们的教程如何允许MySQL数据库服务器的远程连接

如何允许MySQL数据库服务器的远程连接 | myfreax
默认情况下,MySQL服务器仅监听来自本地主机的连接,这意味着它只能由运行在同一主机上的应用程序访问

结论

在本教程中,您学习了如何在Debian 10服务器安装和配置MySQL服务器。我们还向您展示了如何连接到MySQL 服务器。

如果您的应用程序没有任何特定要求,也可以使用MariaDB ,这是Debian 10中的默认数据库系统。

Related Articles