查看MySQL安装包
接下来可以使用以下命令安装MySQL服务器:
- 安装MySQL 8.0
# 安装最新版本
sudo apt install -y mysql-server
# 安装指定版本
sudo apt install -y mysql-server-8.0
-
初始化配置信息
sudo mysql_secure_installation
-
VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security Would you like to setup VALIDATE PASSWORD component?(使用密码强校验组件)-> n
- (如果输入y 之后会让你选level 0/1/2,跳过为root设置密码,因为默认情况下使用auth_socket进行身份验证)
- 输入n、不使用校验组件,请你直接设置密码、之后用
sudo mysql -u root -p
进行登录
-
New Password:(设置新密码,并重复一遍)
-
Remove anonymous users (删除匿名用户) n
-
Disallow root login remotely(拒绝远程root账号登录) n
-
Remove test database and access to it(移除test数据库) n
-
Reload privilege tables now (现在就重新载入权限表) y
之前没有设置密码
使用sudo mysql -u root
登录
- 设置密码(该步骤适用 启动密码校验组件)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
# 密码必须8位
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
是因为之前设置的等级为medium,要求长度>= 8、数字、混合大小写和特殊字符
注意这个mysql 5.7的设置方式不一样
SET GLOBAL validate_password.policy = 'LOW';
# 设置密码策略为低
# mysql 5.7
set global validate_password_policy='LOW';
查看当前密码长度
select @@validate_password.length;
select @@validate_password_length;
±---------------------------+
| @@validate_password.length |
±---------------------------+
| 8 |
±---------------------------+
1 row in set (0.00 sec)
设置密码长度
set global validate_password.length=6;
- 更改默认 root 用户的认证方法(如有必要):
默认情况下,MySQL 使用 auth_socket 组件对 root 进行身份验证,这可能会阻止远程登录。要改为使用密码认证,请执行以下命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'SSKS#dd';
FLUSH PRIVILEGES;
查看当前mysql的用户
SELECT User, Host FROM mysql.user;
mysql> SELECT User, Host FROM mysql.user;
±-----------------±----------+
| User | Host |
±-----------------±----------+
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
±-----------------±----------+
5 rows in set (0.00 sec)
-
创建一个允许远程访问的 root 用户:
接下来,创建一个与您的 root 用户相同权限的用户,但允许从任何主机连接。6.1 不再另外创建root,直接使用mysql创建的root用户
update user set Host='%' where User='root';
授予权限
GRANT ALL ON *.* TO 'root'@'%'; FLUSH PRIVILEGES; # 刷新权限
创建自己的root用户
CREATE USER 'root'@'%' IDENTIFIED BY 'SSKS#dd';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
mysql> CREATE USER ‘root’@‘%’ IDENTIFIED BY ‘123456’;
Query OK, 0 rows affected (0.10 sec)mysql> GRANT ALL PRIVILEGES ON . TO ‘root’@‘%’ WITH GRANT OPTION;
Query OK, 0 rows affected (0.11 sec)mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)mysql> SELECT User, Host FROM mysql.user;
±-----------------±----------+
| User | Host |
±-----------------±----------+
| root | % |
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
±-----------------±----------+
6 rows in set (0.00 sec)
- 修改 MySQL 配置以允许远程连接:
编辑 MySQL 配置文件,通常在 /etc/mysql/mysql.conf.d/mysqld.cnf
或 /etc/mysql/my.cnf
。
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind-address 和mysqlx-bind-address项,把127.0.0.1更改为 0.0.0.0 或注释掉这两行,以允许从任何 IP 地址连接。
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0 # 这个步骤也可以不设置
使用Navicat 17登录
连接成功