ubuntu20.04 安装 mysql 8.0 数据库
一、安装数据库
1.安装 mysql 数据库:
更新源:
sudo apt update
安装 mysql 服务:
sudo apt install mysql-server
安装完成之后,mysql 服务会自动启动。查看 mysql 是否正常运行:
sudo systemctl status mysql
输出如下结果,则说明 mysql 服务已径在正常运行
mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:>
Active: active (running) since Sat 2021-11-06 09:37:36 CST; 3min 22s ago
Main PID: 36265 (mysqld)
Status: "Server is operational"
2.设置密码:
MySQL 安装成功都会有一个 mysql_secure_installation 脚本,可以运行它设置 mysql 服务 root 的初始密码:
① 调用脚本:
sudo mysql_secure_installation
② 根据系统提示一步步按要求操作:
第一步:设置 VALIDATE PASSWORD 组件:输入 y
第二步:选择 root 密码级别,密码强度分为三个级别:低,中,高
第三步:设置 root 用户密码
第四步:后面系统会要求您删除匿名用户、限制 root 用户计算机的访问、删除测试数据库、重新加载特权表等,所有选项都按 y 就行
3.配置远程访问:
将 bind-address 的值改为 0.0.0.0
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
重启 mysql 服务
sudo /etc/init.d/mysql restart
4.登录:
第一种:直接登录(MySQL 8.0 及以上版本,auth_socket 默认情况下,root 用户通过插件进行身份验证,所以这种方法不需要输入密码直接可以登录)
sudo mysql
第二种:输入密码登录,这种安全性更高
mysql -uroot -p你的摩玛
如果要使用外部程序以 root 用户身份登录到 mysql 服务时,需要更改身份验证方法,把 auth_socket 改为 mysql_native_password。在 mysql 服务中运行以下两行命令完成:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
FLUSH PRIVILEGES;
如果出现以下报错:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
解决办法:
报错原因:requirements 密码策略不符合要求。
以下命令查看密码策略:
SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.01 sec)
策略说明
validate_password.length:密码的最小长度,默认是 8,把它改成 6
set global validate_password.length=6;
validate_password.policy:验证密码的复杂程度,把它改成 0
set global validate_password.policy=0;
validate_password.check_user_name:用户名检查,用户名和密码不能相同,把它关掉
set global validate_password.check_user_name=off;
二、设置 root 账号允许远程访问
进入 mysql
sudo mysql -uroot -p你的密码
修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
使用 mysql_native_password 重新修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
允许远程访问
UPDATE mysql.user SET host = '%' WHERE user = 'root';
刷新权限
FLUSH PRIVILEGES;
三、新增用户赋权并设置远程访问
创建用户并设置密码
CREATE USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
设置远程权限
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;