北通游戏手柄不是北游APP里的单机游戏就都不能玩了吗

数据库版本Server version: 5.6.22-log MySQL Community Server (GPL)
root用户登录后,新建db,叫test2mysql& create database test2 ;Query OK, 1 row affected (0.00 sec)
新建用户usr_test2;GRANT ALL PRIVILEGES ON test2.* TO 'usr_test2'@'%' IDENTIFIED BY 'test123' ;
使用新建的用户usr_test2登录后,查看database发现多出来两个db, 其中的test和test_mqm没有授权给usr_test2啊,咋回事?看来值得深究一下原因mysql&+--------------------+| Database
|+--------------------+| information_schema || test
|| test_mqm
|+--------------------+4 rows in set (0.00 sec)
一。首先普及下mysql的权限知识GRANT命令用来建立新用户,指定用户口令并增加用户权限。其格式如下:
mysql& GRANT &privileges& ON &what&-& TO &user& [IDENTIFIED BY "&password&"]-& [WITH GRANT OPTION];
&privileges&是一个用逗号分隔的你想要赋予的MySQL用户权限的列表。你可以指定的权限可以分为三种类型:
数据库/数据表/数据列权限: Alter: 修改已存在的数据表(例如增加/删除列)和索引。Create: 建立新的数据库或数据表。Delete: 删除表的记录。Drop: 删除数据表或数据库。INDEX: 建立或删除索引。Insert: 增加表的记录。Select: 显示/搜索表的记录。Update: 修改表中已存在的记录。
全局管理MySQL用户权限:
file: 在MySQL服务器上读写文件。PROCESS: 显示或杀死属于其它用户的服务线程。RELOAD: 重载访问控制表,刷新日志等。SHUTDOWN: 关闭MySQL服务。
特别的权限:
ALL: 允许做任何事(和root一样)。USAGE: 只允许登录--其它什么也不允许做。
二。普及一下MySQL授权表MySQL的授权系统通常是通过MySQL数据库中的四个表来实现的(老版本mysql还有host表,mysql5.6已经没有了),这些表有user、db、tables_priv和columns_priv。这些表的用途各有不同,但是有一点是一致的,那就是都能够检验用户要做的事情是否为被允许的。这4个表的字段都可分解为两类,一类为作用域字段,一类为权限字段。作用域字段用来标识主机、用户或者数据库;而权限字段则用来确定对于给定主机、用户或者数据库来说,哪些动作是允许的。
user表&&该表决定是否允许用户连接到服务器。如果允许连接,权限字段则为该用户的全局权限。db表&&用于决定哪些用户可以从哪些主机访问哪些数据库。包含在db表中的权限适用于这个表标识的数据库。tables_priv表&&该表与db表相似,不同之处是它用于表而不是数据库。这个表还包含一个其他字段类型,
包括timestamp和grantor两个字段,用于存储时间戳和授权方。columns_priv&&该表作用几乎与db和tables_priv表一样,不同之处是它提供的是针对某些表的特定列的权限。
这个表也多出了一个字段类型,即其他字段,包括了一个timestamp列,用于存放时间戳。
三、MySQL服务器的访问控制对用户的访问进行控制,就是通过查询这些授权表:User表Db表Tables_priv表Columns_priv表
此外,一旦连接到了服务器,一个用户可以使用两种类型的请求:
管理请求(shutdown,reload,file,super,process等)
数据库相关的请求(select,insert,delete,update等)
当用户提交管理请求时,服务器只需查看user表,这是因为user表是唯一包含与管理工作有关的权限的一个表。然而,当用户提交数据库请求时,要查看的表就要更多了。user表中的权限是全局性,在这个表中授予用户的权限对服务器上的所有数据库都有效,这些权限可以被认为是超级用户权限。db包含的权限是特定于数据库的。因此,让user表内所有的权限保持为&N&不失为一个明智的选择。
有了上面的理论知识,我们就可以逐层的追查问题产生的原因了因为我的用户usr_test2是新建的,并且授权都没问题,推测不是user表的问题,直接核查db表
mysql& select * from db where db='test' \G*************************** 1. row ***************************
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: YCreate_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: N
Execute_priv: N
Event_priv: Y
Trigger_priv: Y*************************** 2. row ***************************
User: rabbit
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: YCreate_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Execute_priv: Y
Event_priv: Y
Trigger_priv: Y2 rows in set (0.00 sec)
发现第一条有问题,user为空字符
删除该条记录后,刷新权限,发现已经看不到test数据库了,但还是多个test_mqm数据库mysql& delete from db where db='test' and user =''\GQuery OK, 1 row affected (0.01 sec)
mysql&Query OK, 0 rows affected (0.00 sec)
mysql&+--------------------+| Database
|+--------------------+| information_schema || test2
|| test_mqm
|+--------------------+3 rows in set (0.00 sec)
继续核查db表mysql& select * from db \G*************************** 1. row ***************************
User: usr_test5
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: YCreate_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Execute_priv: Y
Event_priv: Y
Trigger_priv: Y*************************** 2. row ***************************
Db: test\_%
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: YCreate_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: N
Execute_priv: N
Event_priv: Y
Trigger_priv: Y*************************** 3. row ***************************
User: rabbit
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: YCreate_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Execute_priv: Y
Event_priv: Y
Trigger_priv: Y*************************** 4. row ***************************
Db: test_mqm
User: rabbit
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: YCreate_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Execute_priv: Y
Event_priv: Y
Trigger_priv: Y*************************** 5. row ***************************
User: usr_test2
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: YCreate_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Execute_priv: Y
Event_priv: Y
Trigger_priv: Y5 rows in set (0.00 sec)
果然第2条记录中的有问题,*************************** 2. row ***************************
Db: test\_%
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: YCreate_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: N
Execute_priv: N
Event_priv: Y
Trigger_priv: Y这说明把所有"test_"开头的db授权给了所有用户,因此原因找到了,删除db表里的这条记录即可。mysql& delete from db where user='' ;Query OK, 1 row affected (0.00 sec)
mysql&Query OK, 0 rows affected (0.00 sec)
mysql&Query OK, 0 rows affected (0.00 sec)
用usr_test2重新登录,查询db,显示正常,至此问题解决[root@vm_mysql1 ~]# mysql -uusr_test2 -pEnter password: Welcome to the MySQL monitor.
C or \g.Your MySQL connection id is 490875Server version: 5.6.22-log MySQL Community Server (GPL)
Copyright (c) , Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.
Type '' or '\h' for help. Type '\c' to clear the current input statement.
mysql&+--------------------+| Database
|+--------------------+| information_schema || test2
|+--------------------+2 rows in set (0.00 sec)
阅读(...) 评论()Linux下mysql5.7不使用su权限无法登入的问题
最近由于项目需求又要装mysql了,可是安装后直接mysql -u
-p却无法登入,根据mysql的惯例,不用密码应该是没问题呀,在网上看到有人说使用su权限即可,立即试了下还真可以,可是问题又来了,我要使用mysql
workbench进行惯例数据库,可是配置好了之后却又一次无法使用,允许远程连接开了,root密码也改了,使用su权限启动workbench也试了,最终落入到这样一个局面:终端里只能使用su
mysql可以连接数据库,workbench给了su权限也不行。纠结之下翻到一处有人说改一下user表root用户的plugin字段的值为
mysql_native_password,我看了一下该字段的当前值是auth_socket,于是立即修改,重新使用mysql
-u root -p,顺利登入!
根据那位朋友给的MySQL官方解释连接,我点过去看了一下,大致的意思是plugin字段用于限定该用户连接mysql的认证方式,socket套接字和本地密码的方式,我们平时使用的大多是密码认证方式,通过socket连接是linux特有的方式,,可在本地直接通过mysql套接字连接更加安全可靠。而workbench默认是采用TCP/IP连接,这种方式需要使用密码认证方式,当然后面也发现可以选择Socket/Pipe方式连接。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Mysql5.7安装问题?(输入密码)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Mysql5.7安装问题?(输入密码)
上传于|0|0|文档简介
&&mysql5.7的新特性,初始时会生成默认的随机密码?
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 北通左游 的文章

 

随机推荐