MySQL服务器通过权限表来空值用户对数据库的访问,权限表存放在mysql数据库中,由mysql_install_db 脚本初始化,存储账户权限信息表主要有:user,db,host,tables_priv,columns_priv和procs_priv.
user表是MySQL中最重要的一个权限表,其中的字段大致分为四类:用户列,权限列,安全列和资源控制列。
其中用户列包括:Host、User、authentication,分别表示主机名、用户名、密码,其中User和Host为User表的联合主键。当用户与服务器之间建立连接时,输入的账号信息中的用户名称、主机名和密码必须匹配User表中对应的字段。
db表和host表
db表和host表是MySQL数据中非常重要的权限表,db表中存储了用户对某个数据库的操作权限,决定用户从哪个主机存取哪个数据库,host表中存储了某个主机对数据库的操作权限,配合db权限对给定主机上数据库级操作权限做更细致的控制。
tables_priv表和columns_priv表
tables_priv表用来对表设置操作权限,columns_priv表用来对表的某一列设置权限。
tables_priv表中 Host,Db,User和Table_name分别表示主机名,数据库名,用户名和表名。
Grantor表示修改该记录的用户。
Time_priv表示对表的操作权限包括Select ,Insert,Update,Delete,Create,Drop,Grant,References,Index和Alter。
Column_priv字段表示对表中的列的操作权限。
创建user用户:
刷新权限:
FLUSH PRIVILEGES;
修改msql数据库的user表
UPDATE mysql.user set authentication_string =PASSWORD('rootpwd')WHERE User='root'and HOST='localhost';
刷新:
FLUSH PRIVILEGES;
使用SET语句修改root用户的密码
SET PASSWORD=password(‘rootpwd’);
root用户修改普通用户密码
SET语句修改普通用户的密码:
SET PASSWORD FOR ‘user’@‘host’=PASSWORD(‘somepassword’);