mysql用户管理总结

来源:互联网 发布:苹果的电子相册软件 编辑:程序博客网 时间:2024/06/08 14:58
mysql是一个多用户数据库,具有功能强大的访问控制系统。

一, 权限表
mysql服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库中,由MySql_install_db 初始化。存储账户权限信息表主要有:
user,db,host,tables_priv,columns_priv和procs_priv.
1.user表:用户列,权限列,安全列,资源控制列。
2.db表和host表:用户列,权限列
3,tables_privc:对表设置操作权限
4,columns_priv:对表的某一列的操作权限
5,procs_priv:对存储过程和存储函数设置操作权限

二, 账号管理
常用参数:
-h:主机名
-u:用户名
-p:密码
-P:端口号
数据路名:在命令最后指定数据库名
-e:执行sql语句

三,新建普通用户
1.使用CREATE USER语句创建新用户
CREATE USER user _specification…;
user_specification:
user@host
[
identified by [PASSWORD] ‘password’ | identified with auth_plugin [AS ‘auth_string’]
]
user表示创建用户的名称;host表示允许登录的用户主机名称;identified by表示用来设置用户的密码,[PASSWORD]表示表示用哈希值设置密码,该参数可选。
‘password’:表示用户登录时使用明文密码;identified with 语句为用户指定一个身份验证插件,auth_plugin是插件的名称,插件的名称可以使一个带引号的
字符串,或双引号的字符串,auth_string可选的字符串参数,该参数传递给身份验证插件,由该插件解释该参数的意义。CREATE USER语句会添加一个新的mysql
账号,使用create user的用户必须拥有全局create user的权限或mysql数据库的insert权限;新创建的用户没有任何权限,如果添加的用户已经存在,create user会
返回一个错误。
2.使用grant语句创建用户
使用create user语句创建的用户没有任何权限,但是使用GRANT语句创建新用户的同时可以对用户进行授权。
GRANT privileges ON db.table
TO user@host [INDENTIFIED BY ‘password’ ] [WITH GRANT OPTION ];
privileges 表示赋予用户的权限类型;db.table表示用户的权限所作用的数据库中的表;identified by 关键字用来设置密码;‘password’表示用户的密码;with grant option
为可选参数,表示对新建立的用户赋予grant权限,即该用户可以对其他用户赋予权限。
注意:在user表中user和host区分大小写。
3.直接操作mysql用户表
insert into MySql.user(host,user,password,[privilegelist ])
vlaues(‘host’,’username’,PASSWORD’password’,privilegevaluelist);
host,user,password分别为user表中的主机,用户名和密码字段。privilegelist表示用户的权限,可以有多个权限;PASSWORD()函数为密码加密函数;privilegevaluelist为对应的权限的值,只能取‘Y’或者‘N’。

四,删除普通用户
1,使用DROP USER语句删除用户
语法:DROP USER user [,user];
drop user ‘user’@‘localhost’; 删除账号在本地登录的权限
drop user; 删除来自授权表的账户权限记录
2.使用DELETE语句删除用户
DELETE语法:
DELETE FROM MYSQL.user where host=’hostname’ and user=’username’
host和user是user表中的两个字段。

五,root用户修改密码
1,使用mysqladmin在命令行指定新密码
语法:
mysqladmin -u username -h localhost -p password “newpwd”
usernmae 为要修改密码的用户名称;参数h指需要修改的对应主机名;参数p指输入当前密码;password为关键字,后面双引号中的newpwd为新密码。
2.修改mysql数据库的user表
语法:
update mysql.user set Passwpord=PASSWORD(“rootpwd”) where User=”root” and Host=”localhost”;
PASSWORD( )用来加密用户密码。执行update语句后,需要执行FLUSH PRIVILEGES语句重新加载用户权限。
3,使用set语句修改root用户的密码
语法:
SET PASSWORD=PASSWORD(“rootpwd”);
为了生效必须执行FLUSH PRIVILIEGES.

六,root用户修改普通用户密码
1,使用set语句修改普通用户的密码
语法:
SET PASSWORD FOR ‘user’@‘host’= PASSWORD( ‘somepassword’ );
2.使用update语句修改普通用户的密码
语法:
UPDATE MySql.user SET Password=PASSWORD(‘pwd’) where User=”username” and Host=”hostname”;
执行完updata,需要执行 flushprivileges 语句刷新。
3,使用grant语句更改密码
语法:
GRANT USAGE ON . TO ‘someuser’ @ ‘%’ INDENTIFIED BY ‘somepassword’;
如果使用grant …identified by 语句或mysqladmin pasword 命令设置密码,他们均会加密密码,在这样的情况下,不使用PASSWORD()函数。

七,root用户密码丢失的解决方法
使用–skip-grant-tables选项启动mysql服务
在配置文件中的mysqld中加入–skip-grant-tables 重启服务。

0 0
原创粉丝点击