Ubuntu22 安装 Mysql8 初始化 root 密码

Ubuntu22 安装 Mysql8 初始化 root 密码

安装

sudo apt install mysql-server;
sudo apt install mysql-cient;

sudo apt purge/autoremove ...;

# 启动
sudo systemctl start mysql;
# 查看
sudo systemctl status mysql;
# 结束
sudo systemctl stop mysql;

登录

mysql -u root -p

此时无论怎么输密码都是不正确的,需要自己进行设置,那么就需要先进入mysql。但没有密码怎么进呢?有两种方法:

1)用 debian-sys-maint 用户登录

sudo cat /etc/mysql/debian.cnf;

记住用户 debian-sys-maint的密码,然后即可通过此用户进入mysql

2)跳过密码验证

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在里面添加一句skip-grant-tables

此时再进入mysql是不需要密码的,直接mysql -u root即可

修改密码

进入之后,修改密码的方法有很多,随便搜搜就有了。不过可能有一些在mysql8中行不通,不安全。这里使用的是

# 首先进去 ’mysql‘ 数据库
use mysql

# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_passwd';

此时有可能会报错:

❗️ERROR 1819 (HY000): Your password does not satisfy the current policy 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 |
±-------------------------------------±-------+

上面便是密码强度为中级对应的各种设置。你可以按要求设置密码,也可以更改要求:

SET GLOBAL validate_password.length = 6;
SET GLOBAL validate_password.mixed_case_count = 0;
SET GLOBAL validate_password.number_count = 0;
SET GLOBAL validate_password.special_char_count = 0;

现在祖传密码123456就可以用啦

中间不成功你可能需要刷新一下flush privileges;

最后不要忘了把skip-grant-tables删除掉

创建用户与授权

创建用户

host 使用通配符 % 表示可以从任意远程主机登录

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

# 例子
CREATE USER 'tester'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'tester'@'192.168.1.11' IDENDIFIED BY '123456';
CREATE USER 'tester'@'%' IDENTIFIED BY '123456';
CREATE USER 'tester'@'%' IDENTIFIED BY '';
CREATE USER 'tester'@'%';

授权

GRANT privileges ON databasename.tablename TO 'username'@'host';

# 创建的用户还可以给别人授权
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

# 例子
GRANT SELECT, INSERT ON school.student TO 'tester'@'%';
GRANT ALL ON *.* TO 'tester'@'%';
GRANT ALL ON *.* TO 'tester'@'%'WITH GRANT OPTION;

撤销授权

怎么授权的,也要怎么取消授权。即,你是按照*.*授权的,还是按照dbname.tablename这样授权的,收回的时候也要对应。否则并不会收回

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

# 例子
REVOKE SELECT ON *.* FROM 'tester'@'%';

修改密码

这个,在 mysql8 中,待考证

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

删除用户

DROP USER 'username'@'host';

你可能感兴趣的:(experience,mysql,debian,linux)