设为首页 收藏本站
查看: 900|回复: 0

[经验分享] mysql用户和权限管理

[复制链接]

尚未签到

发表于 2018-10-6 07:28:52 | 显示全部楼层 |阅读模式
  mysql用户管理
  MYSQL是一个多用户的数据库,MYSQL的用户可以分为两大类:
  1.超级管理员用户(root),拥有全部权限。
  2.普通用户,由root创建,普通用户只拥有root所分配的权限。
  创建数据库用户
  1.CREATE USER创建用户
  使用CREATE USER语句创建用户,必须要拥有CREATE USER权限。其格式如下
  CREATE USER user[IDENTIFIED BY [PASSWORD] 'password';
  其中,user参数表示新建用户的账户,user由用户名(User)和主机名(Host)构成;IDENTIFIED BY关键字用来设置用户的密码;password参数表示用户的密码;如果密码是一个普通的字符串,就不需要使用PASSWORD关键字。可以没有初始密码。

  mysql> CREATE USER 'paul'@'%'>  执行之后user表会增加一行记录,但权限暂时全部为‘N’。
  2.INSERT语句创建用户
  可以使用INSERT语句直接将用户的信息添加到mysql.user表。但必须拥有mysql.user表的INSERT权限。
  mysql>INSERT INTO mysql.user  (Host,User,Password) VALUES
  ('%','Cherry',PASSWORD('123456'));
  mysql> FLUSH PRIVILEGES;
  执行INSERT之后,要使用命令:FLUSH PRIVILEGES;命令来使用户生效。
  3. GRANT语句创建用户
  用GRANT来创建新的用户时,能够在创建用户时为用户授权。但需要拥有GRANT权限。
  语法如下:
  GRANT priv_type ON database.table TO user[IDENTIFIED BY [PASSWORD] 'password']
  priv_type:参数表示新用户的权限;
  databse.table:参数表示新用户的权限范围;
  user:参数新用户的账户,由用户名和主机构成;
  IDENTIFIED BY关键字用来设置密码;
  password:新用户密码;
  4.删除用户
  4.1.DROP USER 删除用户
  DROP USER语句删除普通用户,需要拥有DROP USER权限。 删除完成后,一样要FLUSH PRIVILEGES才生效。
  语法如下:
  DROP USER user[,user]...
  mysql> drop user Cherry;
  user是需要删除的用户,由用户名(User)和主机名(Host)构成
  4.2 DELETE 语句删除普通用户
  可以使用DELETE语句直接将用户的信息从mysql.user表中删除。但必须拥有对mysql.user表的DELETE权限。DELETE FROM mysql.user WHERE Host = ‘%’ AND User = ‘admin’; 删除完成后,一样要FLUSH PRIVILEGES才生效。
  mysql> DELETE FROM mysql.user WHERE Host='%'AND User='Paul';
  mysql> FLUSH PRIVILEGES;
  修改用户密码
  1. 用mysqladmin 修改root用户密码
  语法:mysqladmin -u用户名 -p旧的密码 password 新密码
  [root@paul ~]# mysqladmin -uroot -p123 password 123456
  2. 用SET语句修改密码
  使用root用户登录到MySQL服务器后,可以使用SET语句来修改密码:
  修改自己的密码,不需要用户名
  格式:
  mysql>SET PASSWORD FOR ‘USERNAME’@’HOST’=PASSWORD(‘new_pass’);
  SET PASSWORD = PASSWORD("123");
  mysql> SET PASSWORD=PASSWORD('redhat');
  修改其他用户密码:
  SET PASSWORD FOR 'myuser'@'%'=PASSWORD("123456") FOR 用户名@主机名
  3. 修改user表
  UPDATE user表的passwor字段的值,也可以达到修改密码的目的;
  mysql> UPDATE mysql.user SET Password=PASSWORD('123') WHERE USER='root';
  mysql> FLUSH PRIVILEGES; 刷新后生效。
  4.设置新密码
  [root@paul ~]# mysqladmin -uroot -p password
  Enter password:    #输入旧密码
  New password:     #输入新密码
  Confirm new password:   #确认新密码
  5.初始化mysql数据库,并配置root用户密码。使用如下命令:
  [root@zabbix ~]# mysql_secure_installation
  设置mariadb的密码为abc123
  忘记用户密码解决办法
  普通用户,直接用root超级管理员登录进去修改密码就可以了,但是如果root密码丢失了,怎么办呢?
  方法一:
  1.mysqld_safe方式找回密码
  [root@paul ~]# service mysqld stop;              停止mysql
  [root@paul ~]# mysqld_safe --skip-grant-tables&   安全模式启动
  [root@paul ~]# mysql -uroot –p                  无密码回车键登录
  重置密码:
  mysql> use mysql;
  mysql>update user set password=password("123456") where user='root' and host='localhost';
  mysql> flush privileges;
  正常启动:
  [root@paul ~]# service mysqld restart
  方法二:
  1、在配置文件/etc/my.cnf添加skip-grant-tables一行,跳过密码验证。
  2、重启mysql数据库主进程# /etc/init.d/mysqld restart(也可以直接先停掉MySQL进程后使用  skip-grant-tables参数重启MySQL)
  3、登录数据库修改密码。mysql> update user set authentication_string=password('') where user='root' and host='localhost';
  mysql> flush privileges;
  这里需要修改的字段是authentication_string,这点和之前的旧版本不同。
  4、将my.cnf中mysqld节点的skip-grant-tables配置删除,然后重新启动服务即可。
  mysql权限管理
  安装MySQL时会自动安装一个名为mysql的数据库。mysql数据库里面存储的都是权限表。与权限相关的数据表:user,db,host,tables_priv,columns_priv,procs_priv等
  用户权限管理主要有以下作用:
  1. 可以限制用户访问哪些库、哪些表
  2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作
  3. 可以限制用户登录的IP或域名
  4. 可以限制用户自己的权限是否可以授权给别的用户
  mysql 的权限体系大致分为5个层级:
  全局层级全局权限
  适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限。
  数据库层级
  数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中。GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。
  表层级
  表权限适用于一个给定表中的所有列。这些权限存储在mysql.talbes_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。
  列层级
  列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。
  子程序层级

  CREATE ROUTINE,>  这些权限信息存储在下面的系统表中:
  mysql.user
  mysql.db
  mysql.host
  mysql.table_priv
  mysql.column_priv
  当用户连接进来,mysqld会通过上面的这些表对用户权限进行验证!
  我们可以用 CREATE USER 或 GRANT 创建用户,后者还同时分配相关权限。而 REVOKE 则用于删除用户权限,DROP USER 删除账户。MySQL 赋予用户权限命令语法为:
  grant 权限 on 数据库对象 to 用户;

  grant 权限 on 数据库对象 to 用户>
  grant 权限 on 数据库对象 to 用户@"ip">  GRANT 语法:
  GRANT privileges (columns)
  ON what

  TO user>  WITH GRANT OPTION;
  privileges 列表:

  *>  * CREATE: 创建数据库和表。
  * DELETE: 删除表中已有的记录。
  * DROP: 抛弃(删除)数据库和表。
  * INDEX: 创建或抛弃索引。
  * INSERT: 向表中插入新行。
  * REFERENCE:未使用。
  * SELECT: 检索表中的记录。
  * UPDATE: 修改现存表记录。
  * FILE: 读或写服务器上的文件。
  * PROCESS: 查看服务器中执行的线程信息或杀死线程。

  *>  * SHUTDOWN: 关闭服务器。
  * ALL: 所有权限,ALL PRIVILEGES同义词。
  * USAGE: 特殊的 "无权限" 权限。
  下面创建一个test用户,密码为test,并且只能对studb数据库进行操作的命令
  语法:
  GRANT UPDATE(cid,cname) ON mysqlpart2.custom TO 'user3'@'localhost';

  mysql> GRANT ALL ON studb.* TO test>  GRANT语句的语法看上去像这样:

  GRANT privileges (columns) ON what TO user>  mysql> flush privileges;
  撤销所有权限
  语法:
  REVOKE 权限 ON 数据库.表 FROM  '用户名'@'登录主机;

  mysql> REVOKE ALL ON studb.* FROM test>  mysql> flush privileges;
  注:说明:赋权与撤销权限的区别,就是REVOKE是将to改为from
  查看权限
  show grants;//自己
  show grants for dba@localhost;//指定用户指定host
  设置权限时必须给出一下信息
  1,要授予的权限
  2,被授予访问权限的数据库或表
  3,用户名
  grant和revoke可以在几个层次上控制访问权限
  1,整个服务器,使用 grant ALL  和revoke  ALL
  2,整个数据库,使用on  database.*
  3,特点表,使用on  database.table
  4,特定的列
  5,特定的存储过程
  user表中host列的值的意义
  %              匹配所有主机
  localhost    localhost不会被解析成IP地址,直接通过UNIXsocket连接
  127.0.0.1      会通过TCP/IP协议连接,并且只能在本机访问;
  ::1                 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-612953-1-1.html 上篇帖子: Mysql-索引 下篇帖子: mysql查看表更改时间
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表