Understanding MySQL Password

Probably I can't get stupid anymore, but seriously this is the first time I had to think about it (first time a single-user app comes out of multiple users from multiple users). What is a MySQL (or any other database) password for? The password that we see in the connection strings is as if:

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

      

Is it the branch

codeword for the user root

to access the database tree

? Or is it for root

accessing any MySQL database on a specific machine? Or is it the password for any user to access the database tree

? Or a password for any user to access any MySQL database on that machine?

So my questions are mostly?

  • Is the password specific to MySQL, or database, or user? Or for this specific user for this specific database on this specific MySQL installation? Or any combination of them?

  • Can we have a password for MySQL itself (if not with branch

    ), can we have a password for db itself (if not with branch

    ), etc.?

Sorry for my ignorance;)

Edit: I can run this query to drop my database:

query = "DROP DATABASE tree";

      

with connection string:

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

      

Doesn't that mean that the password is not for the database, but for the user?

+3


source to share


2 answers


1) Is the password specific to MySQL, or database, or user? Or for this specific user for this specific database for this specific MySQL installation? Or any combination of them?

Let me start from scratch. The first time you install MySQL, you are prompted for a username (say root) and a password (say root). This is for the whole server. After you connect to the server with the above username and password, you can create user accounts for various reasons, for example: "abc" with password "xxx" should only connect to one database, eg Test. And another user "xyz" with the password "aaa" can connect to the server and access all databases, but only with the SELECT privilege.

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

      

Here user 'abc' with password 'xxx' can connect to the server, but with minimal privileges - access only to the test database.



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

      

This user - "xyz" with the password "aaa" connects to the server only with the SELECT privilege.

Thus, three users with different passwords can actually connect to the server as "root", with the password "root" having all privileges, while "abc" and "xyz" have least privileges.

I think I answered your second question as well :-)

+1


source


the password allows the user to connect to the database.

one of them.



i.e. this specific user can connect to this specific instance of the database with that specific password.

+1


source







All Articles