首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试不使用密码登录到正确的数据库

尝试不使用密码登录到正确的数据库
EN

Database Administration用户
提问于 2017-01-23 22:47:32
回答 1查看 42关注 0票数 0

我的SQL 5.6.31是在RHEL 7.2上设置的,如下所示:

我可以使用根用户帐户登录,如下所示:

代码语言:javascript
复制
mysql -u root -p
Enter Password:

我创建了两个普通用户(一个通过命令行创建,一个通过基于PHP的应用程序创建)

通过命令行创建的

普通用户:

代码语言:javascript
复制
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';

通过基于PHP应用程序创建的

普通用户:

我的PHP应用程序只是使用代码中的inserting命令将用户名插入数据库(数据库名: practiceDB)。例如,创建并存储到数据库中的普通用户名为peter

场景#1:

当我使用用户名jeffery和密码mypass从命令行登录到mysql时,如下所示:

代码语言:javascript
复制
mysql -u jeffery -pmypass 

然后运行命令show databases,我可以看到我的practiceDB和其他默认的MySQL数据库,比如information_schema

场景#2:

由于其中一个普通用户(peter)是由webapp创建并驻留在数据库(practiceDB)中的,所以我尝试从命令行访问用户,而不使用任何密码,如下所示:

代码语言:javascript
复制
mysql -u peter

我可以进入mysql命令提示符。实际上,不要在上面的命令行中指定现有的用户名peter。即使我指定了任何东西,我也可以进入命令提示符。另外,当我检查show databases时,我只看到了information_schema数据库,这不是我的用户存储的地方。

有人能告诉我为什么会这样吗?

EN

回答 1

Database Administration用户

发布于 2017-01-23 23:00:28

当您使用CREATE USER时,它所做的就是将一行添加到mysql.user中,主机设置为localhostuser设置为jeffreypeter,并填充密码列。所有DB特权都默认为'N'

连接时,运行以下命令:

代码语言:javascript
复制
SHOW GRANTS;

它只会简单地说GRANT USAGE。这意味着你可以连接,没有其他的!

当您以root身份登录时,现在必须显式地告诉mysqld在各个级别授予权限。

示例

这将让杰弗里做任何事,除了放弃他的特权。

代码语言:javascript
复制
GRANT ALL PRIVILEGES ON *.* to 'jeffrey'@'localhost';

这会让杰弗里做任何事,包括放弃他的特权。

代码语言:javascript
复制
GRANT ALL PRIVILEGES ON *.* to 'jeffrey'@'localhost' WITH GRANT OPTION;

这将让jeffrey在一个名为jeff的数据库中完成所有事情。

代码语言:javascript
复制
GRANT ALL PRIVILEGES ON jeff.* to 'jeffrey'@'localhost';

下次以root身份登录时,运行以下命令

代码语言:javascript
复制
DESC mysql.user;
DESC mysql.db;

这将向您展示全局(mysql.user)和数据库(mysql.db)特权是什么样的。

请阅读关于您可以给用户的所有赠款的MySQL文档

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/162019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档