用户权限和访问控制

创建用户并设置密码
create user zorro identified by ‘123‘; 除了本机不能登录,任何一个都可以 (默认%)
create user [email protected] identified by ‘123‘;// 本机zorro用户登录
create user [email protected]‘%‘ identified by ‘123‘;
create user [email protected]‘172.16.20.9’ identified by ‘123’;//指定ip号
查询
select user from mysql.user;
修改用户名
rename user zorro to robin;
select user from mysql.user;
删除
drop user robin;
drop user [email protected]‘localhost’;//指定来源
mysql> select password(123);
+-------------------------------------------+
| password(123) |
+-------------------------------------------+
| *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+-------------------------------------------+
1 row in set (0.00 sec)

修改用户密码(登录之后改)
set password for ‘zorro‘@‘%‘= password(‘123‘); //password()函数加密
set password = password(‘123‘);修改当前用户
mysqladmin -uroot -p123 password=‘123456’;登录之前改
root密码丢失
重置root口令
1.
shell> mysqld_safe --skip-grant-tables --skip-networking &
shell>mysql -S /var/lib/mysql/mysql.sock (-u root -p)
2.
mysql>update mysql.user set password=password(‘123‘) where host=‘localhost‘ and user=‘root‘ host=‘localhost’;

查询用户权限
show grants for zorro \G
*************************** 1. row ***************************
Grants for [email protected]%: GRANT USAGE ON *.* TO ‘zorro‘@‘%‘ IDENTIFIED BY PASSWORD ‘*23AE809DDACAF96AF0FD78ED04B6A265E05AA257‘

USAGE表示没有任何权限
连接测试
mysql -u zorro -p123
ERROR 1045 (28000): Access denied for user ‘zorro‘@‘localhost‘ (using password: YES)
失败

权限
MySQL存取控制包含2个阶段:
阶段1:服务器检查是否允许你连接。
阶段2:假定你能连接,服务器检查你发出的每个请求。看你是否有足够的权限实施它。例如,如果你从数据库表中选择(select)行或从数据库删除表,服务器确定你对表有SELECT权限或对数据库有DROP权限。

授权grant
命令格式
grant 权限 on 库.表 to 用户@主机 [密码]
grant select on hr.* to [email protected]‘localhost‘;
show grants for zorro \G
*************************** 1. row ***************************
Grants for [email protected]%: GRANT USAGE ON *.* TO ‘zorro‘@‘%‘ IDENTIFIED BY PASSWORD ‘*23AE809DDACAF96AF0FD78ED04B6A265E05AA257‘
*************************** 2. row ***************************
Grants for [email protected]%: GRANT SELECT ON `hr`.* TO ‘zorro‘@‘%‘
grant select,insert,desc,drop,delect on *.* to [email protected]‘localhost‘;
权限范围:select,insert,desc,drop,update,alter...

移除权限revoke
命令格式
revoke 权限 on 库.表 from 用户@主机;
revoke select on hr.* from zorro‘localhost‘;

远程主机授权
grant all on hr.* to [email protected]‘192.168.1.129‘ identified by ‘123‘;
grant all on hr.* to [email protected]‘%‘ identified by ‘123‘;

grant和revoke可在几个层次上控制访问权限
整个服务器 grant all 和 revoke all
整个数据库 on databases.*
grant select,insert on hr.* to [email protected]‘localhost‘ identified by ‘123‘;
特定的表 on database.table;
grant select,insert on hr.tt to [email protected]‘localhost‘ identified by ‘123‘;

其他方法:
mysql> INSERT INTO user (Host,User,Password) VALUES(‘localhost‘,‘dummy‘,password());
mysql> FLUSH PRIVILEGES;

练习:
1.创建帐号zorro 允许从本机和任意位置登录
create user [email protected]‘%‘;
create user [email protected]‘%‘ identified by ‘123‘;
create user [email protected]‘localhost‘ identified by ‘123‘;
2.修改zorro名字为king
rename user [email protected]‘%‘ to [email protected]‘%‘;
rename user [email protected]‘localhost‘ to [email protected]‘localhost‘;
3.设置king用户的密码位123
set password for [email protected]‘localhost‘=password(‘123‘);
set password for [email protected]‘%‘=password(‘123‘);
4.以king帐号登录到mysql数据库 设置密码位abc
set password=password(‘123‘);

重置root密码
1.停止mysql(pkill mysql)
2./usr/local/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables &
3.update mysql.user set password=password(‘123‘) where user=‘root‘ and host=‘localhost‘;
4.停止mysql (pkill mysql)
5./usr/local/mysql/bin/mysqld_safe --user=mysql &
6.正常登录

跳过授权
vim /etc/my.cnf
[mysqld]
skip-grant-tables

----------------------------------------------------------------------

create user robin; 添加帐号
set password for robin=password(‘123‘); 设置密码
create user zorro identified by ‘123‘; 创建帐号同时设置密码
rename user zorro to newzorro; 修改帐号名字
drop user newzorro; 删除帐号

set password=password(‘123‘); 设置当前帐号密码

root密码丢失
实验环境
删除数据目录
重新初始化
管理密码为空(直接登录)

重置root密码
shell>/usr/local/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables &
--skip-grant-tables 跳过授权表不进行验证.
shell>mysql 进去就行了
mysql> update mysql.user set password=password(‘123‘) where user=‘root‘ and host=‘localhost‘; 更新密码

pkill mysql
service mysqldd restart

授权
1.是否能连接数据库 localhost %
2.验证帐号密码

1.能否连接数据库
第一部分 本地来源
第二部分 远程来源
create user [email protected]‘%‘ identified by ‘123‘;
select user,password,host from mysql.user;

create user [email protected]‘localhost‘ identified by ‘123‘;

2,授权
grant all on db.* to [email protected]‘localhost‘; db库所有表具有所有权限
grant select,insert on db.t5 to [email protected]‘localhost‘ identified by ‘123‘; 授权同时创建帐号

回收权限revoke all on db.* from [email protected]‘localhost‘;

*.* mysql.user
db.* mysql.db
db.t5 mysql.tables_priv
db.t5(id) mysql.columns_priv

用户信息mysql.user存储所有用户信息,权限信息分布不同的表中
grant all on *.* to [email protected] identified by ‘123‘;
abc1 权限保存在 mysql.user

grant all on db.* to [email protected] identified by ‘123‘;
abc2 权限保存在 mysql.db

grant all on db.test20 to [email protected] identified by ‘123‘;
abc3 权限保存在 mysql.tables_priv

grant select(name) on db.test20 to [email protected] identified by ‘123‘;
abc4 权限保存在 mysql.columns_priv

select * from mysql.tables_priv;
能不能update更新权限?
更新授权表,获取对所有库所有表的权限
mysql> create user [email protected]‘localhost‘;
mysql> set password for ‘tom‘@‘localhost‘ =password(‘123‘);
mysql> update mysql.user set Select_priv=‘Y‘ where user=‘tom‘;
mysql> select * from mysql.user where user=‘tom‘;
mysql> flush privileges;
更新授权表,获取对kkk库所有表的权限
mysql> insert into mysql.db(Host,Db,User,Insert_priv) values(‘localhost‘,‘kkk‘,‘tom‘,‘Y‘);
mysql> flush privileges;
更新授权表,获取对kkk库t1表的权限
mysql> insert into mysql.tables_priv(Host,Db,User,Table_name,Table_priv) values(‘localhost‘,‘kkk‘,‘tom‘,‘t1‘,‘Update‘);
mysql> flush privileges;

更新授权表,获取对kkk库t2表的id列update权限
mysql> insert into mysql.columns_priv(Host,Db,User,Table_name,Column_name,Column_priv) values(‘localhost‘,‘kkk‘,‘tom‘,‘t2‘,‘did‘,‘Update‘); ----------列权限

mysql> insert into mysql.tables_priv(Host,Db,User,Table_name,Column_priv) values(‘localhost‘,‘kkk‘,‘tom‘,‘t2‘,‘Update‘); ----------表权限

mysql> flush privileges;

时间: 2024-10-20 07:37:56

用户权限和访问控制的相关文章

linux用户权限 -> ACL访问控制

UGO设置基本权限: 只能一个用户,一个组和其他人 ACL设置基本权限: r.w.x 设定acl只能是root管理员用户. 相关命令: getfacl , setfacl facl权限 简介 facl的权限是针对某一类用户设置的.如果希望对某个指定的用户进行单独的权限控制就需要用到文件的访问控制列表acl.设定acl只能是root管理员用户. 使用方法 查看权限 在没有设定acl时,看到的权限是相同的,下面的结果是默认权限 [[email protected] ~]# getfacl /tmp

Nginx简介及用户认证、访问控制和反向代理配置

Nginx 是一个很强大的高性能Web和反向代理服务器及及电子邮件(IMAP/POP3)代理服务器,由俄罗斯程序员设计师Igor Syaoev所开发,官方网站:http://nginx.org/  特点是占有内存少.并发能力强. Nginx配置文件及目录简介: - /usr/local/nginx/                                                           安装目录 - /usr/local/nginx/conf/nginx.conf  

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->WinForm版本新增新的用户权限设置界面

在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用户可访问的模块(菜单)与相应的操作权限.需要给某些角色添加与移除相应的用户等等,如果没有一个灵活可靠的配置管理工具将会使权限控制变得十分麻烦.用户授权管理模块就是为了方便用户.角色权限的集中统一管理而开发的模块.在用户授权管理模块,操作员可以添加或移动用户到指定的角色.可以分配或授予指定用户的模块(菜单)的访问权限.可以收回或分配指定用户的操作(功能)权限.可以对所有用户.角色.模块(菜单).操作(功能

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-> Web版本新增新的用户权限设置界面

在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用户可访问的模块(菜单)与相应的操作权限.需要给某些角色添加与移除相应的用户等等,如果没有一个灵活可靠的配置管理工具将会使权限控制变得十分麻烦.用户授权管理模块就是为了方便用户.角色权限的集中统一管理而开发的模块.在用户授权管理模块,操作员可以添加或移动用户到指定的角色.可以分配或授予指定用户的模块(菜单)的访问权限.可以收回或分配指定用户的操作(功能)权限.可以对所有用户.角色.模块(菜单).操作(功能

手动代替自动化之系统用户权限篇

用户管理 用户的创建删除管理 useradd:创建用户相关 userdel:删除用户 usermod:管理用户 passwd:用户密码相关 用户组的创建删除管理 groupadd: 用来添加组相关 groupmod: 用来管理组相关 groupdel: 用来删除组相关 权限管理 文件/目录的三种权限 两种权限设置方法 文件管理 make值 文件系统上的特殊权限 ACL权限 上述就是本文的三个模块了 下面聊些注意事项(小伙子作死不算啊) 注意 最好不要手工改文件,能用命令的就用命令防止出错. ro

Linux -- Samba-PAM模块应用-系统密码同步;用户与客户端访问控制;磁盘配额;回收站

PAM模块应用 Samba服务器3.X与PAM模块结合已非常完善,通过PAM模块的强大功能可以有效地丰富Samba服务器的各项功能. 6.4.1  系统密码同步 Samba服务器使用完全独立于系统之外的用户认证,这样的好处是可以提高安全性,但同样也带来了一些麻烦,比如修改用户密码是即要修改该用户登录系统的密码,又要修改登录Samba服务器的密码.但通过PAM模块所提供的功能可以有效实现系统用户密码与Samba服务器密码的自动同步. 使用passwd修改用户系统密码时,自动同步Samba服务器用户

Linux   用户组和用户权限的使用2

touch /etc/nologin echo system is maintanining >> /etc/nologin 可以控制非管理员root之外的所有普通用户不能登陆 7版本里面 cd /run/ touch /run/nologin 效果一样让普通用户不能登陆 ehho weihu > /run/nologin useradd -ou0 root2 通过强制该成UID=0 生成管理员用户 cp -r /etc/skel/. /home/zczx cp -r /etc/skl/

MongoDB下配置用户权限

MongoDB默认设置为无权限访问限制 注:研究成果基于Windows平台 在部署mongodb成功后,进入控制台: 输入命令:mongod  use admin,你会发现该DB下包含了一个system.user表,呵呵,没错,这个表就等同于MsSql中的用户表,用来存放超级管理员的,那我们就往它里面添加一个超级管理员试试看 里我添加一个超级管理员用户,username为admin,password也为admin,即然我们添加了超级管理员,那咱们就来测试下,看看咱们再次连接MongoDB需不需要

RBAC用户权限管理数据库设计

http://minjiechenjava.iteye.com/blog/1759482 RBAC用户权限管理数据库设计 博客分类: RBAC 权限设计 RBAC RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用户-角色-权限"的授权模型.在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系.(如下图) 角色是什么?可以理解为一定数