当前位置:首页 > 生活百科

mysql免密码登录下无法创建用户(分析mysql创建用户的方法)

栏目:生活百科日期:2024-12-26浏览:0

一、用户与权限管理

(一)grant

1、help grant

和权限相关的命令关键字grant可通过help查看其用法:

mysql> help grant;Name: 'GRANT'Description:Syntax: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 ...]...CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';GRANT ALL ON db1.* TO 'jeffrey'@'localhost';GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';GRANT USAGE ON *.* TO 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90;...

2、grant授权

对于上述:

GRANT ALL ON db1.* TO 'jeffrey'@'localhost';

它实际包含了两条命令,先是创建用户jeffrey,然后才是对这个用户进行授权。如下:

mysql> create user 'jeffrey'@'localhost' identified by 'mypass';mysql> grant all on db1.* to 'jeffrey'@'localhost' identified by 'mypass';

对于授权语句的一些关键字解释如下:

grantall privilegeson dbname.*to username@localhostIdentified by ‘mypass’授权命令对应权限目标:库和表用户名和客户端主机用户密码

3、实战练习

查看当前数据库用户情况

mysql> select user,host from mysql.user;+--------+---------------+| user ? | host ? ? ? ?  |+--------+---------------+| root ? | 127.0.0.1 ? ? || root ? | ::1 ? ? ? ? ? || root ? | hadoop-slave1 || root ? | localhost ? ? || system | localhost ? ? |+--------+---------------+5 rows in set (0.00 sec)

创建用户并授权

mysql> grant all privileges on test.* to 'admin'@'localhost' identified by 'admin123';Query OK, 0 rows affected (0.01 sec)

查看授权情况

mysql> select user,host from mysql.user;+--------+---------------+| user ? | host ? ? ? ?  |+--------+---------------+| root ? | 127.0.0.1 ? ? || root ? | ::1 ? ? ? ? ? || root ? | hadoop-slave1 || admin  | localhost ? ? || root ? | localhost ? ? || system | localhost ? ? |+--------+---------------+6 rows in set (0.00 sec)

查看admin具体权限

mysql> show grants for 'admin'@'localhost';+--------------------------------------------------------------------------------------------------------------+| Grants for admin@localhost ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |+--------------------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD '*01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C' || GRANT ALL PRIVILEGES ON `test`.* TO 'admin'@'localhost' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  |+--------------------------------------------------------------------------------------------------------------+2 rows in set (0.00 sec)

(二)create和grant配合使用

1、使用步骤

创建用户username、主机localhost、密码passwd

mysql> create user 'username'@'localhost' identified by 'passwd';

授权创建的用户管理dbname数据库权限(无需密码)

mysql> grant all privileges to dbname.* to 'username'@'localhost';

2、实战练习

查看当前数据库用户情况

mysql> select user,host from mysql.user;+--------+---------------+| user   | host          |+--------+---------------+| root   | 127.0.0.1     || root   | ::1           || root   | hadoop-slave1 || admin  | localhost     || root   | localhost     || system | localhost     |+--------+---------------+6 rows in set (0.02 sec)

创建用户

mysql> create user 'admin1'@'localhost' identified by 'admin123456';Query OK, 0 rows affected (0.02 sec)

注意的是这一步并没有授权,仅仅是创建一个普通用户。

查看用户情况

mysql> select user,host from mysql.user;+--------+---------------+| user   | host          |+--------+---------------+| root   | 127.0.0.1     || root   | ::1           || root   | hadoop-slave1 || admin  | localhost     || admin1 | localhost     || root   | localhost     || system | localhost     |+--------+---------------+7 rows in set (0.00 sec)

如果对admin1进行授权就参照步使用步骤的第二步完成。

(三)用户授权的权限有什么

1、查看用户权限

在上面授权过程中可以看出来,使用的基本都是全部权限:

grant all privileges to dbname.* to 'username'@'localhost';

然后查看用户的权限后是这样的:

mysql> show grants for 'admin'@'localhost';+--------------------------------------------------------------------------------------------------------------+| Grants for admin@localhost                                                                                   |+--------------------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD '*01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C' || GRANT ALL PRIVILEGES ON `test`.* TO 'admin'@'localhost'                                                      |+--------------------------------------------------------------------------------------------------------------+2 rows in set (0.00 sec)

有时候并不需要给用户给这么多权限,那么怎么收回呢?

2、回收用户权限(revoke)

mysql> revoke insert on test.* from 'admin'@'localhost';  #一定要指定在那个数据库上的权限Query OK, 0 rows affected (0.00 sec)

可以再次查看该用户的权限:

mysql> show grants for 'admin'@'localhos+---------------------------------------------------------------------------------------------------------+| Grants for admin@localhost                                                                         |+---------------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD '*01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C' || GRANT SELECT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES,LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `test`.* TO 'admin'@'localhost' |+----------------------------------------------------------------------------------------------------------+2 rows in set (0.00 sec)

可以看到用户在test数据库上除了insert权限外的权限它都有了。

也就是说数据库的all priveleges包含下面的权限:

INSERT, SELECT, UPDATE, DELETE, CREATE, DROP,REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES,LOCK TABLES, EXECUTE,CREATE VIEW, SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,EVENT, TRIGGER

所以我们在授权时尽量采用最小化的授权原则,比如:

mysql> grant select,insert,update,delete,create,drop on crm.* to 'admin'@'10.0.0.%' identified by '123456';

当admin用户创建表后记得收回create权限:

mysql> revoke create on crm.* from 'admin'@'10.0.0.0.%';

注意:可通过help revoke查看用法

二、远程连接

通过上面的授权,比如:&…&’admin1&’@&’localhost&’..中的localhost是授权的主机,也就是说什么样的机器有权限连接MySQL服务器。 localhost可以用域名、IP地址、IP端来代替。

(一)匹配方式

1、百分号匹配法

mysql> grant all 0n dbname.* to 'admin1'@'10.0.0.%' identified by '123456';mysql> flush privileges;

2、子网掩码配置法

mysql> grant all 0n dbname.* to 'admin1'@'10.0.0.0、255.255.255.0' identified by '123456';mysql>flush privileges;

(二)客户端连接

客户端本地连接与远程连接是不一样的,如果远程连接首先应该赋予远程连接的权限:

mysql> grant all 0n dbname.* to 'admin1'@'10.0.0.%' identified by '123456';

其次,再进行远程连接:

mysql> mysql -uadmin1 -p123456 -h 10.0.0.0.3

“mysql免密码登录下无法创建用户(分析mysql创建用户的方法)” 的相关文章

万隆再当选双汇发展董事长(双汇宫斗新进展)

8月31日晚间,双汇发展披露董事会决议,会议以8票同意、0票反对、0票弃权审议通过《关于选举公司董事长、副董事长的议案》,选举万隆为公司第八届董事会董事长,万宏...

如何安装wifi路由器设置(手把手教你安装wifi路由器)

日常生活中想要上网通常都离不开路由器,一些用户可能还不太清楚怎样安装路由器,即怎样进行路由器的初始设置,为此小编就来和大家分享一下路由器的安装方法,想了解路由器...

公众号广告主和流量主区别(两者区别介绍及开通方式)

经常有小伙伴问我,公众号文章中的广告是怎么开通的,怎么才能利用公众号赚取收益等,这就涉及到了公众号的广告主和流量主问题,那么它们有什么区别,又该如何开通呢?下面...

mindjet mindmanager怎么用(mindjet思维导图教程)

思维导图,英文是TheMindMap,又叫心智导图,是表达发散性思维的有效图形思维工具,它简单却又很有效同时又很高效,是一种实用性的思维工具。相关的软件还不少,...

什么3d网络游戏好玩不花钱(分享免费3D格斗网游)

《格斗猎人2》是一款横版3D格斗手游,日系动画风格搭配畅快的打击感,横版格斗爱好者一定会喜欢。在游戏中,玩家将选择一个自己喜欢的职业,在亚瑟王国经历各种各样的冒...

体脂秤什么牌子精准高2020年(零误差多功能体脂秤品牌)

生活水平提高了,人们对于健康的要求是日益提升,原先要求称体重,现在要求看体脂,这也是最近这几年体脂秤火爆的时代背景。在2020年你随便搜索体脂秤,从十几块钱到大...

一个企业可以申请几个服务号(服务号注册步骤)

相信经常使用微信的小伙伴都知道小程序和公众号是主要的获客工具之一,不仅能帮助自身吸引线上流量、还能扩大互联网市场,很多商家都会将公众号和小程序关联起来,以此获取...

学生开网店卖什么好赚钱,最盈利的五个行业你知道吗-

在校大学生创业的人不在少数,利用闲暇的课余时间来做兼职。现在互联网很盛行,不少人通过开网店来实现创业。但是很多大学生住宿舍根本没有存货的地方。那么大学生想要通过...

区块链是什么意思,区块链的发展历程及类型

区块链技术如今非常流行,但是它到底是什么呢?是如何工作的,解决了哪些问题,又有哪些用途呢?今天我来用通俗易懂的语言解释一下。区块链顾名思义,就是一组包含数据块的...

商标网上申请流程是怎么样,商标网上申请缴费指南

4月19日,国务院新闻办公室举行新闻发布会,请国家知识产权局局长申长雨、国家工商行政管理总局副局长刘俊臣、国家版权局副局长阎晓宏介绍2015年中国知识产权发展状...