文章目录
一、为mysql数据库开账号、并授权
语法:
grant [权限1,权限2...] on 某库.某表 to 新用户名@'主机名/IP地址' identified by '密码';
例子:
grant select,insert on 数据库.数据表 to 数据库用户@'%' identified by '密码';
创建新用户
为mysql服务器添加一个用户和设置密码,并允许远程访问拥有所有权限
- 5.7版本
GRANT ALL PRIVILEGES ON doorctrl_bjhq.* TO 'hjc_042043' @"%" IDENTIFIED BY 'hjc1985';
FLUSH PRIVILEGES;
- 8.0版本:
创建用户和授权是分开的
# 授予远程连接权限
CREATE USER 'hjc_042043'@'%' IDENTIFIED BY '密码';
GRANT ALL ON *.* to `root`@`%` WITH GRANT OPTION;
FLUSH PRIVILEGES;
将库授权给用户
指定将一个库授权给用户
// 此用户已经在数据库中存在了的,所有后面就不用跟上'IDENTIFIED BY',数据库密码已经存在了。
GRANT ALL PRIVILEGES ON doorctrl_bjhq.* TO ‘hjc_042043’@“%”;
FLUSH PRIVILEGES;
3. 通过SQL语句来添加普通用户的和密码
mysql> insert into mysql.user(Host,User,authentication_string)
values("%","demodb",password("Q1@W2#E3$R4"));
FLUSH PRIVILEGES;
二、更新数据库密码
1.使用update更新
5.7之前的版本
UPDATE user SET password=PASSWORD('123456') WHERE user='root';
FLUSH PRIVILEGES;
5.7之后的版本
UPDATE user SET authentication_string=PASSWORD('123456') WHERE user='root';
FLUSH PRIVILEGES;
2.使用mysqladmin更新
语法:/usr/local/mysql/bin/mysqladmin -u用户名 -p旧密码 password 新密码
例子:/usr/localmysql/bin/mysqladmin -uroot -p123456 password admin*098
三、超级管理员忘记密码
1、修改配置
编辑mysql配置文件,找到[mysqld],在下面添加一行skip-grant-tables
vi /etc/my.cnf
[mysqld]
# 添加这一行先
skip-grant-tables
#重启MySQL服务
systemctl restart mysqld.service
2、进入MySQL控制台
#直接按回车,这时不需要输入root密码
mysql -uroot -p
3、修改root密码
update mysql.user set password=password('123456') where User="root" and Host="localhost";
grant all on *.* to 'root'@'localhost' identified by '123456' with grant option;
#刷新系统授权表
flush privileges;
4、取消/etc/my.cnf中的skip-grant-tables
编辑文件,找到[mysqld],删除skip-grant-tables这一行
vi /etc/my.cnf
[mysqld]
# 将这行注释
# skip-grant-tables
:wqa #保存退出
5、重启mysql
重启mysql,这个时候mysql的root密码已经修改为123456
systemctl restart mysqld.service
6、进入mysql控制台
输入密码验证
mysql -uroot -p 123456