mysql - 了解 MySQL 密码

标签 mysql passwords connection-string

可能我再笨不过了,但说真的,这是我第一次不得不考虑它(这是第一次单用户应用程序从多个位置变成多用户应用程序)。 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 不是这种情况),我们可以为数据库本身设置一个密码吗(如果 不是这种情况)分支) 等?

抱歉我的无知;)

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

query = "DROP DATABASE tree";

使用连接字符串:

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

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

最佳答案

1) Is the password specific for the MySQL, or the database, or the user? Or for that particular user for that particular database on that particular MySQL installation? Or any combination of these?

让我从头开始。第一次安装 MySQL 时,系统会要求您输入用户名(比如 root)和密码(比如 root)。这是针对整个服务器的。 使用上述用户名和密码连接到服务器后,您可以出于不同的原因创建用户帐户,例如 - 用户“abc”和密码“xxx”应该只连接到一个数据库,比如 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”具有最小权限。

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

关于mysql - 了解 MySQL 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9964403/

相关文章:

mysql - 如何用另一个表中的多列替换表中的一列

mysql - 如何为单个 MySQL 数据库启用 STRICT_ALL_TABLES'?

php - 安全地发送纯文本密码?

python - Blob存储: connection to emulator,本地开发失败

c# - 在 web.config 中指定链接的 sql server

python - 使用 adodbapi 在 python 中创建与 Vertica 数据库的连接

MySQL - PERL - 按多列排序,然后按列零件号字段排序

python - 在 Python 中运行 MySQL 服务器

php - 加密密码

c# - 我在使用用户密码编码示例时遇到问题