MySQL && MySQL密码修改、添加用户、删除用户与授权

密码管理


修改已知原密码


  • 方法1: 用SET PASSWORD命令
    首先登录MySQL。
 set password for root@localhost = password('123'); 
  • 方法2:用mysqladmin
mysqladmin -uroot -p123456 password 123
  • 方法3:用UPDATE直接编辑user表
    首先登录MySQL。
update mysql.user set password=password('123') where user='root' and host='localhost'; 
flush privileges; 

忘记密码


  • 修改配置文件

Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf

如果以上配置文件有冲突,那么以最后读取到的为主
[mysqld] 标签添加参数skip-grant-tables 跳过授权表。

vim /etc/my.cnf
[mysqld]
skip-grant-tables  跳过授权表
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

然后执行修改已知密码的 方法1方法3 操作

  • 直接以后台安全进程启动mysql
/usr/bin/mysqld_safe --skip-grant-tables &

然后执行已知密码的 方法1方法3 操作

用户管理


1、创建用户

create user user@host;
create user user@host identified by 'password';

@localhost 表示用户只能在本地登录
@% 表示在任何一台电脑上都可以登录
@ip 表示在指定IP电脑上可以登录
@domain 表示在指定域名下可以登录

or

insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));

用户的信息保存在mysql数据库中的user表中,验证用户是否创建成功如下:

select user,host,password from mysql.user;	    

2、用户权限

  • 权限分类:
USAGE无权限,只有登录数据库,只可以使用test或test_*数据库
ALL所有权限
select/update/delete/super/slave/reload指定的权限
with grant option允许把自己的权限授予其它用户或者从其他用户收回自己的权限
  • 作用范围:
*.*全库、全表(mysql.user)
mysql.*mysql库下所有表(某库中的所有表)(mysql.db)
mysql.usermysql库中user表(单表)(mysql.table_priv)
mysql.user.hostmysql库中user表的host列(mysql.columns_priv)
  • 主机登录权限:
user@localhost表示user只能在本地通过socket登录服务器
user@192.168.0.1表示user用户只能在192.168.0.1登录数据库服务器
user@192.168.0.0/255.555.255.0指定某个子网的主机可以登录数据库
user@%表示user用户能在所有的机器上登录数据库服务器
  • 用户授权:

授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限)
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”;

grant all privileges on testDB.* to test@localhost ;
flush privileges;//刷新系统权限表

如果想指定部分权限给一用户,可以这样来写:

grant select,update on testDB.* to test@localhost identified by 'password'; #不需要先创建用户啊
or
grant select,update on testDB.* to test@localhost ;#需要先创建用户 
flush privileges; //刷新系统权限表

授权test用户拥有所有数据库的某些权限:

grant select,delete,update,create,drop on *.* to test@"%" ;

test用户对所有数据库都有select,delete,update,create,drop 权限。
@"%" 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。)

对localhost授权:

grant all privileges on testDB.* to test@localhost identified by '1234';
  • 权限的保存位置:
mysql.user所有mysql用户的账号和密码,以及对用户对全库全表权限(.
mysql.db非mysql库的授权都保存在此(db.*)
mysql.table_priv某库某表的授权(db.table)
mysql.columns_priv某库某表某列的授权(db.table.col1)
mysql.procs_priv某库存储过程的授权
  • 回收权限:revoke
revoke update,select on mysql.user from test@localhost;  	撤消指定的权限
revoke all privileges,grant option from test@'%';           撤消所有的权限
  • 删除用户:
drop user user01@'localhost';	                            删除用户

select user from mysql.user where user='user01';	       验证用户是否删除成功

drop user user;                                          默认删除该用户从任意主机登陆

rename user test01@'instructor.example.com' to test001@'localhost';  重命名用户名

show grants;                                              查看用户权限

show grants for user02@'%';                               查看指定用户的权限 

drop user ''@'rhel6.example.com';                        删除一个匿名用户

delete from mysql.user where user='';		            删除mysql中的匿名用户

delete from mysql.user where user='root' and host='::1';     删除mysql中ipv6


flush privileges;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dendysan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值