随着Debian 9 Stretch的发布,Debian的存储库中不再提供世界上最受欢迎的开源关系数据库管理系统MySQL。
MariaDB已成为默认的数据库系统。MariaDB是MySQL的向后兼容二进制替代。在本教程中,我们将向您展示如何从MySQL Apt的仓库在Debian 9安装MySQL。
如果您的应用程序没有任何特定要求,则应该使用MariaDB,这是在Debian 9默认数据库系统。
还有一点就是,MySQL现在已经不再支持Debian 9,你可以选择在Debian 10安装MySQL,或者在Debian 9安装MariaDB代替MySQL。
在继续学习本教程之前,请确保您以root或者具有sudo权限的用户登录。
要将MySQL APT存储库添加到您的系统。使用wget命令下载MySQL配置APT仓库的deb软件包。下载完成后,使用apt命令安装deb软件包。
wget http://repo.mysql.com/mysql-apt-config_0.8.10-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb
系统将显示配置菜单,您可以在其中选择要安装的MySQL版本。
已预先选择MySQL 8.0,如果要安装其他版本的MySQL,请选择MySQL Server & Cluster (Currently selected: mysql-8.0)
,然后选择首选的 MySQL版本。
我们将安装MySQL 8.0版。选择最后一个选项OK
,然后按Enter
以保存配置。
在撰写本文时,MySQL的最新版本是8.0版。如果不确定要选择哪个版本,请查阅要在服务器上部署的应用程序的文档。
在您的Debian 9服务器安装MySQL之前,首先运行命令sudo apt update
更新软件包列表。更新软件包列表,再运行sudo apt install mysql-server
命令在您的Debian服务器上安装MySQL。
sudo apt update
sudo apt install mysql-server
sudo systemctl status mysql
安装程序将要求您设置MySQL root密码。现在不要设置密码,将其保留为空白,我们将在下一部分中进行设置。
接下来,您将看到一条消息,通知设置MySQL 8身份验证插件。选择默认的MySQL 8身份验证插件即可,以后可以随时修改。
安装完成后,MySQL将作为systemd服务自动启动,您可以通过运行命令sudo systemctl status mysql
查看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语句命令来做到这一点。
第二个选项是创建一个新的专用管理用户,该用户可以访问所有数据库。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;
如果你需要配置MySQL用户的远程访问,可参考我们的教程如何允许MySQL数据库服务器的远程连接。
结论
在本教程中,我们向您展示了如何在Debian 9服务器上安装和保护MySQL服务器。我们还向您展示了如何连接到MySQL Shell以及如何创建新的数据库和表。