【问题标题】:Understanding MySQL password了解 MySQL 密码
【发布时间】:2012-04-01 12:32:13
【问题描述】:

可能我不能再傻了,但说真的,这是我第一次考虑这个问题(单用户应用程序第一次从多个位置变成多用户)。 MySQL(或任何其他数据库)密码用于什么目的?我们在连接字符串中看到的密码,好像是这样的:

"SERVER=localhost;DATABASE=tree;UID=root;PASSWORD=branch;Min Pool Size = 0;Max Pool Size=200"

branch 是用户root 访问数据库tree 的代码字吗?还是让root 访问特定机器上的任何 MySQL 数据库?还是任何用户访问数据库tree 的密码?或者任何用户访问该机器上任何 MySQL 数据库的密码?

所以我的问题基本上是?

  1. 密码是特定于 MySQL、数据库还是用户?或者对于特定 MySQL 安装上特定数据库的特定用户?还是这些的任意组合?

  2. 我们能否为 MySQL 本身设置一个密码(如果 branch 不是这种情况),我们是否可以为数据库本身设置一个密码(如果branch 不是这种情况)等?

对不起我的无知;)

编辑:我可以运行这个查询来删除我的数据库:

query = "DROP DATABASE tree";

带有连接字符串:

"SERVER=localhost;UID=root;PASSWORD=branch;Min Pool Size = 0;Max Pool Size=200"

这是否意味着密码不是每个数据库,而是每个用户?

【问题讨论】:

    标签: mysql passwords connection-string


    【解决方案1】:

    1) 是特定于 MySQL、数据库还是 用户?或者对于那个特定数据库的特定用户 特定的 MySQL 安装?还是这些的任意组合?

    让我从头开始。第一次安装 MySQL 时,系统会要求您输入用户名(比如 root)和密码(比如 root)。这是针对整个服务器的。 使用上述用户名和密码连接到服务器后,您可以出于不同原因创建用户帐户,例如 - 密码为“xxx”的用户“abc”应仅连接到一个数据库,例如 Test。而且,另一个密码为“aaa”的用户“xyz”可以连接到服务器并访问所有数据库,但只有 SELECT 权限。

     CREATE USER 'abc'@'%' IDENTIFIED BY 'xxx'; 
     FLUSH PRIVILEGES; 
     GRANT ALL ON `test`.* TO 'abc'@'%' WITH GRANT OPTION;
    

    这里的用户 'abc' 和密码 'xxx' 可以连接到服务器,但只有最低权限 - 只访问测试数据库。

     CREATE USER 'xyz'@'%' IDENTIFIED BY 'aaa'; 
     FLUSH PRIVILEGES; 
     GRANT SELECT ON *.* TO 'xyz'@'%' ;
    

    这个用户 - 'xyz' 和密码 'aaa' 连接到只有 SELECT 权限的服务器。

    因此,三个具有不同密码的用户实际上可以使用“root”连接到服务器,密码为“root”的用户拥有所有权限,而“abc”和“xyz”拥有最低权限。

    我想我也回答了你的第二个问题:-)

    【讨论】:

    • 很棒的工作,我理解你的意思。但我现在有一个q。那么关于我提供的连接字符串,这完全取决于用户的权限吗?我的意思是我的连接字符串中的用户root 可以访问任何数据库,或者只是连接字符串中指定的数据库等,具体取决于用户的权限如何?
    • 没错。根据用户的特权,MySQL 连接到它并显示或工作。 dev.mysql.com/doc/refman/5.5/en/adding-users.html 可能会清除您的所有疑虑。
    • 谢谢 ashwin,如果我能看到更多答案,请让我再等几个小时..
    【解决方案2】:

    密码允许用户连接到数据库。

    一个。

    即该特定用户可以使用该特定密码连接到该特定数据库实例。

    【讨论】:

    • 哦..所以你的意思是如果更多的用户必须访问数据库,那么他们都必须添加到用户表中?还是通常只有一个管理员用户和密码才能安装 MySQL?
    • 有时 - 您可以使用一个普通用户来访问所有应用程序,其他时候,您可以选择让指定用户执行这些操作。这真的取决于系统的要求
    • 我认为这不是真的。你能看到我的编辑吗?我可以很好地删除数据库而不在连接字符串中指定数据库名称。那么这是否意味着密码不是每个数据库?
    • 我们不要混淆“数据库”和“实例”。您可以在实例内部有许多模式。一个用户可能在一个实例中拥有多个模式的权限。
    猜你喜欢
    • 2020-07-04
    • 2017-11-13
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多