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

[经验分享] MySQL/MariaDB用户账户管理

[复制链接]

尚未签到

发表于 2018-10-5 07:01:25 | 显示全部楼层 |阅读模式
'Username'@'Hostname'  Username:任意的字符串组合,只能包含基本意义的字符;可以包含"_"、"."、"-";
  Hostname:可以为FQDN(完全合格域名),域名,IP地址,可使用MySQL通配符"_"代表任意单个字符"%"代表任意多个任意字符;
  创建用户账户:
  CREATE USER语句:

  CREATE USER user [IDENTIFIED BY [PASSWORD] 'password' |>  示例:
  MariaDB [mysql]> create user 'testuser'@'%';

  MariaDB [mysql]> create user 'testuser'@'%'>  也可以使用DML语句创建用户账户:
  INSERT INTO mysql.user SET User='testuser',Host='%',Password=PASSWORD('qhdlink');
  示例:
  MariaDB [mysql]> insert into user set User='user1',Host='%',Password=PASSWORD('qhdlink'),ssl_cipher='',x509_issuer='',x509_subject='',authentication_string='';
  重命名用户账户:
  RENAME USER语句:
  RENAME USER old_user TO new_user [, old_user TO new_user] ...
  示例:
  MariaDB [mysql]> rename user 'testuser'@'%' to 'test'@'172.16.%.%';
  也可以使用DML语句重命名用户账户:
  示例:
  MariaDB [mysql]> update user set User='user01',Host='172.16.75.%' where User='user1';
  删除用户账户:
  DROP USER语句:
  DROP USER user [, user] ...
  示例:
  MariaDB [mysql]> drop user 'test'@'172.16.%.%';
  也可以使用DML语句删除用户账户:
  示例:
  MariaDB [mysql]> delete from user where User='user01';
  用户账户的密码管理:
  1.SET PASSWORD语句:
  SET PASSWORD [FOR user] = { PASSWORD('cleartext password') | OLD_PASSWORD('cleartext password') | 'encrypted password' }
  示例:
  MariaDB [mysql]> set password for 'test'@'%' = PASSWORD('qhdlink');
  2.也可以使用DML语句修改用户账户密码:(向该数据库中插入一条数据)
  示例:
  MariaDB [mysql]> update user set Password=PASSWORD('qhdlink.com') where User='test';
  3.mysqladmin工具:
  # mysqladmin -uUSERNAME -hHOSTNAME -p password 'NEW_PASSWORD'
  注意:执行此操作的MySQL用户需要对mysql.user表有修改权限;
  忘记MySQL管理员的密码的解决办法:
  方法一:
  1.停止当前的MySQL或MariaDB服务;
  2. 在/etc/my.cnf文件中加入下列两条服务器参数:
  skip-grant-tables = ON
  skip-networking = ON
  3.启动MySQL或MariaDB服务,使用mysql或mysqladmin客户端工具以空秘密的root用户登录,进行root用户的密码修改;
  4.从/etc/my.cnf中删除上述两条服务器参数,再重启服务即可;
  方法二:
  1.停止当前的MySQL或MariaDB服务;
  2.使用命令启动MySQL服务:
  # mysqld_safe --skip-grant-tables --skip-networking
  3.启动另一个会话连接,并使用mysql或mysqladmin客户端工具以空密码的root用户的身份修改其密码;
  4.kill掉此前的mysqld-safe及衍生的mysqld服务;
  5.再正常启动服务即可;
  用户授权管理(当用户不存在时自动创建该用户):
  GRANT语句:
  GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
  ON [object_type] priv_level
  TO user_specification [, user_specification] ...
  [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
  [WITH with_option ...]
  priv_type:

  SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX,>  object_type:
  TABLE | FUNCTION | PROCEDURE
  priv_level:
  * | *.* | db_name.* | db_name.tbl_name | tbl_name | db_name.routine_name
  *:表示所有的数据库;
  *.*:表示所有数据库中的所有表对象;
  db_name.*:表示指定数据库中的所有表对象;
  db_name.tbl_name:表示指定数据库中的指定的表对象;
  tbl_name:表示当前正在使用的数据库中的指定的表对象;
  db_name.routine_name:表示指定数据库中的指定存储函数后存储过程对象;通常需要使用object_type参数共同决定;
  user_specification:

  user [>  ssl_option:
  SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject'
  with_option:
  GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count
  示例:
  MariaDB [mysql]> grant all privileges on hellodb.* to 'test'@'%';
  MariaDB [mysql]> grant select,update on hellodb.students to 'test'@'%';
  MariaDB [mysql]> grant select(Name,Age,ClassID) on hellodb.students to 'test'@'%';
  也可以对某些基本表创建视图之后,再对视图进行用户权限授权:
  MariaDB [hellodb]> create view stu_base as select Name,Age,ClassID from students;
  MariaDB [hellodb]> grant all on hellodb.stu_base to 'test'@'%';
  取消授权/收回授权:
  REVOKE语句:
  REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ...
  ON [object_type] priv_level
  FROM user [, user] ...
  REVOKE ALL PRIVILEGES, GRANT OPTION
  FROM user [, user] ...
  示例:
  MariaDB [mysql]> revoke delete on hellodb.* from 'test'@'%';
  MariaDB [mysql]> revoke all on hellodb.students from 'test'@'%';
  MariaDB [mysql]> revoke select(Age,ClassID) on hellodb.students from 'test'@'%';
  注意:在取消已经做出的授权时,REVOKE语句所指定的priv_level部分应该和授权时GRANT语句所指定的priv_level保持绝对一致;否则判定此次取消授权的操作失败;
  示例:前提是testdb数据库中包含有tb1和tb2两张表;
  MariaDB [testdb]> grant all on testdb.* to 'test'@'%';
  MariaDB [testdb]> revoke all on testdb.tb2 from 'test'@'%';
  ERROR 1147 (42000): There is no such grant defined for user 'test' on host '%' on table 'tb2'
  正确的取回授权的方式:
  MariaDB [testdb]> revoke all on testdb.* from 'test'@'%';
  MariaDB [testdb]> grant all on testdb.tb1 to 'test'@'%';
  此时,'test'@'%'用户就只有对testdb数据库中tb2表有所有操作权限;
  查看用户的授权:
  SHOW GRANTS语句:
  SHOW GRANTS [FOR user]


运维网声明 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-612361-1-1.html 上篇帖子: 26期20180727 Lamp Mysql MariaDB-mvon的博客 下篇帖子: mysql5.7制作rpm包spec文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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