delete from mysql.user where user=""; 删除匿名用户
set password=PASSWORD('pass'); 设置登录密码
FLUSH PRIVILEGES;
create user sky;
select host,user,password from mysql.user;
可以看到sky用户信息
drop user sky;
select host,user,password from mysql.user
可以看到sky用户信息没了
mysql> ? create user 看帮助
mysql>create user sky identified by "123";
查看某个用户的权限
show grants for 'sky'@'%';
USAGE 权限最小
%代表所有机器IP
提权
mysql> grant select on vfast.* to "sky"@"%";
回收权限
mysql> revoke select on vfast.* from "sky"@"%"
lab
同一用户,不同IP,不同或相同密码,对某一库的权限不同
删除一个用户例子
revoke all privileges on *.* from "rhce"@"192.168.18.234";
drop user "rhce"@"192.168.18.234";
给192.168.18.234这台机器登陆mysql对VFAST库的操作是只读(select)权限
grant select on vfast.* to "sky"@"192.168.18.234" identified by "123";
给192.168.18.200这台机器登陆mysql对VFAST库的操作是select,insert,delete,update权限
grant select,insert,delete,update on vfast.* to "sky"@"192.168.18.200"identified by "123";
select host,password,user from user;
测试在192.168.18.234上登陆mysql
mysql -h 192.168.18.254 -u sky -p123
mysql> use vfast;
mysql> insert into H1 values(00);
正确提示 拒绝插入
在192.168.18.200上登陆mysql
mysql -h 192.168.18.254 -u sky -p123
mysql> show databases;
mysql> insert into H1 values(00);
mysql> delete from H1 where id=00;
mysql> update H1 set id=16 where id=17; 将ID=17改为等于16
mysql> select * from H1;
以上命令都可以正常执行成功
mysql> drop table H1; 执行不成功 没权限
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
权限中全局最大
GRANT ALL PRIVILEGES ON *.* TO 'kyo'@'%' identified by '123';
flush privileges 刷新权限
ALL PRIVILEGES 所有权限
*.* 所有库的所有表
kyo 登陆用户,%允许登陆的IP 其代表所有
‘123’ 登陆密码
登陆后能干什么
select 查看
ALL PRIVILEGES 所有权限
权限指定符 权限允许的操作
Alter 修改表和索引
Create 创建数据库和表
Delete 删除表中已有的记录
Drop 抛弃(删除)数据库和表
INDEX 创建或抛弃索引
Insert 向表中插入新行
REFERENCE 未用
Select 检索表中的记录
Update 修改现存表记录
FILE 读或写服务器上的文件
PROCESS 查看服务器中执行的线程信息或杀死线程
RELOAD 重载授权表或清空日志、主机缓存或表缓存。
SHUTDOWN 关闭服务器
ALL 所有;ALL PRIVILEGES同义词
USAGE 特殊的“无权限”权限
权限涉及三个表
mysql.user
mysql.db
mysql.tables_orive
删除权限
revoke all privileges on *.* from 'kyo'@'%';
show grants for 'kyo'@'%';
USAGE 权限最小
忘记密码怎么办
方法一
[root@convirt ~]# vim /etc/my.cnf
skip-grant-tables #本地和远程登陆不管用户是谁都可以跳过密码
重启mysql
直接不用密码登陆
mysql> flush privileges ;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' identified by ''; password is null
##方法二测试不成功
mysqld_safe --skip-grant-tables
即可跳过密码验证文件登陆(本地和远程都可以)
--skip-networking 网络不可以登陆只能本地
改口令
update mysql.user set password=password('456') where user=“kyo” and host=“localhost”;
password('456')
kyo@localhost的密码改为456
password 是将密码456加密
如何下线未知用户
查看谁在登陆数据库
show full processlist 可以看到进程ID
改掉该用户的密码 然后刷新生效 杀死其登陆进程。对方就会被踢下线,在连接密码错误,无法登陆。
kill $ID 杀死用户登陆ID 强迫其重新登陆