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';
标签:tester,mysql8,ubuntu,密码,ububtu22,mysql,validate,password,USER
From: https://www.cnblogs.com/shuaikai/p/16899955.html