安装MySQL到Ubuntu 20.04
本文的内容主要来自对How To Install MySQL on Ubuntu 20.04的翻译。在根据该文的指导下,我在自己的Ubuntu 20.04.3 LTS版本中安装了MySQL 8。
Step 1. 安装MySQL
使用apt命令安装MySQL之前,最好先更新下安装包索引
sudo apt update
然后安装mysql-server包。以下命令只安装MySQL但不做任何配置,包括设置用户密码等操作。
sudo apt install mysql-server
Step 2. 配置MySQL
现在MySQL处于全新安装状态,我们需要对它的安全性做一些基础配置。好在这里提供了一个安全配置的安装脚本,我们可以运行它并根据提示做一些简单的配置。
sudo mysql_secure_installation
运行该脚本后首先询问你是否要安装一个用于密码强度校验的插件VALIDATE PASSWORD COMPONENT,这里我选择了安装,输入y。然后要求你从3个校验策略里选择一个,从0到2依次增强。由于这里我仅用于开发环境,因此选择了0,最简单的强度校验。(即最少输入8个字符作为密码)
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
0
根据你选择的校验策略,为MySQL的root用户设置一个密码,并再次输入验证。
下面的提示是对你输入的密码强度进行评估,如果你满意该密码并决定使用,可以直接输入y继续。接下来会有一系列提示帮助你配置其他安全性问题,根据自己的需求设置即可。
Step 3. 创建一个专用的MySQL用户并提升权限
创建一个新的MySQL用户
由于MySQL的root用户具有最高权限,为了安全起见我们应该创建一个专用的用户来操作数据库。如果你只用这个环境作为开发测试使用,则可以忽略这步。
在Ubuntu系统中运行MySQL 5.7或之后的版本,如果用MySQL的root账户登录,则需要系统的root权限。因为这里使用了auth_socket
插件,而不是默认的密码验证。你可以稍后进入MySQL开启密码登录root功能。
sudo mysql
如果已经是能了密码登录root用户的功能,则可以用下面的命令登录
mysql -u root -p
进入到MySQL控制台后,就可以用CREATE USER语句创建新用户了:
mysql> CREATE USER 'username'@'localhost' IDENTIFIED WITH authentication_plugin BY 'password';
其中username
是你想要使用的用户名,localhost
代表只允许用户从本地系统访问数据库。注意这两部分要用单引号包围并用@符号连接。
后面的 WITH authentication_plugin
部分代表要使用的认证插件。这里使用使用前面提到的auth_socket
插件来认证用户,即只用使用Ubuntu系统下所登录的用户才能登录到对应的MySQL账户。也可以完全省略该部分,使用默认的认证插件caching_sha2_password
。
运行下面的语句来创建一个用户名为test的MySQL账户,并使用caching_sha2_password
插件认证用户密码。请务必根据你的需求自定义用户名和密码,我这里使用了简单的密码,不要学我哈。
mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY '11111111';
注意:有些版本的PHP对caching_sha2_password的认证方式存在bug,所以如果你使用类似phpMyAdmin这样的PHP应用来管理数据库,推荐使用旧的认证方式
mysql_native_password
:mysql> CREATE USER 'test'@'localhost' IDENTIFIED WITH mysql_native_password BY '11111111';
如果你想把已有的认证方式改为
mysql_native_password
,也可以用ALTER语句:mysql> ALTER USER 'test'@'localhost' IDENTIFIED WITH mysql_native_password BY '11111111';
给新用户赋予权限
创建完新用户后,便可以将适当的权限授予该用户,授权的语句格式如下:
mysql> GRANT PRIVILEGE ON database.table TO 'username'@'host';
语句中的PRIVILEGE
值为具体权限的定义,可用半角状态的逗号(,)分隔。database
和table
为赋予操作权限的数据库和表,可使用星号(*)代替全全部。全部的权限定义见官方文档。
这里我给刚才新建测试用户赋予了以下权限
mysql> GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'test'@'localhost' WITH GRANT OPTION;
简要描述下上面语句权限的定义:
- CREATE, ALTER, 和 DROP代表用户具有创建、修改和删除数据库、表和用户的权限;
- INSERT, UPDATE, 和 DELETE代表有权插入、更新和删除表的数据;
- SELECT 可查询表数据;
- REFERENCES可创建外键;
- RELOAD 可以使用FLUSH操作。
on *.*
代表对所有数据库和所有表赋予上述权限。WITH GRANT OPTION
表示该用户可以对其他用户赋予他所拥有的这些权限。
注意:使用以下语句可以给用户赋予最高权限,和root用户一样(但极其不建议这样做):
mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' WITH GRANT OPTION;
最后使用FLUSH PRIVILEGES
语句释放以上所有语句操作数据库后留下的缓存
mysql> FLUSH PRIVILEGES;
退出MySQL控制台:
mysql> exit
使用以下语句登录刚才新建的MySQL用户:
mysql -u test -p
Step 4. 测试MySQL运行状态
键入以下命令来查看MySQL服务是否正常运行:
systemctl status mysql.service
如果看到类似下面的输出则代表已经正常运行,注意这里 Active: active (running)
即代表运行状态
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-01-18 09:39:36 CST; 22min ago Process: 860 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 1085 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 19092) Memory: 417.2M CGroup: /system.slice/mysql.service └─1085 /usr/sbin/mysqld
如果MySQL未正常启动,可以使用该命令来启动:sudo systemctl start mysql
同时发布于:安装MySQL到Ubuntu 20.04
本文来自博客园,作者:葱头001,转载请注明原文链接:https://www.cnblogs.com/congtou001/p/install_mysql_to_ubuntu-20.html