Bird
Raised Fist0
MySQLquery~10 mins

Creating users in MySQL - Visual Walkthrough

Choose your learning style10 modes available
Concept Flow - Creating users
Start
↓
Write CREATE USER statement
↓
Execute statement in MySQL
↓
User added to mysql.user table
↓
User can be granted privileges
↓
End
The process starts by writing a CREATE USER command, executing it, which adds the user to the database system, ready for privileges.
Execution Sample
MySQL
CREATE USER 'alice'@'localhost' IDENTIFIED BY 'password123';
This command creates a new user named 'alice' who can connect from 'localhost' with the given password.
Execution Table
StepActionCommand/ConditionResultNotes
1Write commandCREATE USER 'alice'@'localhost' IDENTIFIED BY 'password123';Command readyUser creation command prepared
2Execute commandRun CREATE USER statementUser 'alice' addedUser added to mysql.user table
3Verify userSELECT User, Host FROM mysql.user WHERE User='alice';Returns 'alice'@'localhost'User exists in system
4ExitNo errorsProcess completeUser creation successful
💡 User 'alice' successfully created and stored in mysql.user table
Variable Tracker
VariableStartAfter Step 2After Step 3Final
User 'alice'@'localhost'Does not existCreatedVerifiedExists
Key Moments - 2 Insights
Why do we specify '@localhost' when creating a user?
The '@localhost' part defines where the user can connect from. In the execution_table step 1 and 2, it shows the user is created only for connections from the local machine.
What happens if we try to create a user that already exists?
MySQL will return an error and not create a duplicate user. This is why in step 2, the command must be unique or use IF NOT EXISTS to avoid errors.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the result after executing the CREATE USER command?
ANo change in users
BUser 'alice' added to mysql.user table
CUser 'alice' deleted
DError message shown
💡 Hint
Check execution_table row 2 under Result column
At which step do we verify that the user exists in the system?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at execution_table rows and find where SELECT query is run
If we omit '@localhost' in the CREATE USER command, what would happen?
ASyntax error occurs
BUser can connect from any host
CUser can only connect from localhost
DUser creation fails silently
💡 Hint
MySQL requires host part in user creation, see step 1 command format
Concept Snapshot
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
- Creates a new database user
- 'username' is the user name
- 'host' defines where user can connect from
- Password sets authentication
- User added to mysql.user table
- Must execute in MySQL server
Full Transcript
Creating a user in MySQL involves writing a CREATE USER statement specifying the username, host, and password. When executed, this command adds the user to the mysql.user table, making the user recognized by the database system. The host part defines from where the user can connect, commonly 'localhost' for local machine access. After creation, the user can be granted privileges to access databases. Verification can be done by querying the mysql.user table to confirm the user exists. If a user already exists, MySQL will return an error unless IF NOT EXISTS is used. This process ensures secure and controlled access to the database.

Practice

(1/5)
1. What is the main purpose of the CREATE USER statement in MySQL?
easy
A. To add a new user who can access the database
B. To delete an existing user
C. To change the password of a user
D. To list all users in the database

Solution

  1. Step 1: Understand the purpose of CREATE USER

    The CREATE USER command is used to add a new user account to the MySQL server.
  2. Step 2: Differentiate from other user commands

    Deleting users uses DROP USER, changing passwords uses ALTER USER, and listing users requires querying system tables.
  3. Final Answer:

    To add a new user who can access the database -> Option A
  4. Quick Check:

    CREATE USER adds users [OK]
Hint: Remember: CREATE USER adds, DROP USER removes [OK]
Common Mistakes:
  • Confusing CREATE USER with DROP USER
  • Thinking CREATE USER changes passwords
  • Assuming CREATE USER lists users
2. Which of the following is the correct syntax to create a user named 'alice' who can connect from any host with password 'mypassword'?
easy
A. CREATE USER 'alice'@'localhost' PASSWORD 'mypassword';
B. CREATE USER alice IDENTIFIED BY 'mypassword';
C. CREATE USER 'alice'@'%' IDENTIFIED BY 'mypassword';
D. CREATE USER 'alice' IDENTIFIED WITH 'mypassword';

Solution

  1. Step 1: Check the correct syntax for user creation

    The correct syntax includes the username in quotes, the host in quotes after @, and the password set with IDENTIFIED BY.
  2. Step 2: Validate each option

    CREATE USER 'alice'@'%' IDENTIFIED BY 'mypassword'; uses 'alice'@'%' which means any host, and IDENTIFIED BY 'mypassword' is correct. CREATE USER alice IDENTIFIED BY 'mypassword'; misses the host part. CREATE USER 'alice' IDENTIFIED WITH 'mypassword'; uses IDENTIFIED WITH which is incorrect here. CREATE USER 'alice'@'localhost' PASSWORD 'mypassword'; uses PASSWORD keyword incorrectly.
  3. Final Answer:

    CREATE USER 'alice'@'%' IDENTIFIED BY 'mypassword'; -> Option C
  4. Quick Check:

    Correct syntax includes user@host and IDENTIFIED BY [OK]
Hint: User must have 'user'@'host' and IDENTIFIED BY password [OK]
Common Mistakes:
  • Omitting the host part after username
  • Using PASSWORD instead of IDENTIFIED BY
  • Using IDENTIFIED WITH incorrectly
3. What will happen if you run this command?
CREATE USER 'bob'@'localhost' IDENTIFIED BY 'secret';
medium
A. A new user 'bob' is created who can connect only from localhost
B. An error occurs because password is missing
C. User 'bob' is created but can connect from any host
D. The command deletes user 'bob' if exists

Solution

  1. Step 1: Analyze the command

    The command creates a user named 'bob' who can connect only from 'localhost' with password 'secret'.
  2. Step 2: Understand host specification

    The '@localhost' means the user can connect only from the local machine, not from other hosts.
  3. Final Answer:

    A new user 'bob' is created who can connect only from localhost -> Option A
  4. Quick Check:

    User@localhost limits connection to local machine [OK]
Hint: Host part limits where user can connect from [OK]
Common Mistakes:
  • Assuming user can connect from any host without '%' wildcard
  • Thinking password is missing causes error
  • Confusing CREATE USER with DROP USER
4. Identify the error in this command:
CREATE USER 'carol' IDENTIFIED BY 'pass123';
medium
A. Usernames cannot be in quotes
B. Missing host part after username
C. Password must be numeric only
D. IDENTIFIED BY is not valid syntax

Solution

  1. Step 1: Check syntax requirements for CREATE USER

    MySQL requires specifying the host part after the username, like 'user'@'host'.
  2. Step 2: Identify the missing part

    The command misses '@host' after 'carol', which causes a syntax error.
  3. Final Answer:

    Missing host part after username -> Option B
  4. Quick Check:

    User must be 'name'@'host' [OK]
Hint: Always include '@host' after username [OK]
Common Mistakes:
  • Omitting the host part
  • Thinking quotes are not allowed for usernames
  • Believing password must be numeric
5. You want to create a user 'dave' who can connect only from IP 192.168.1.100 with password 'safePass!'. Which command correctly achieves this and ensures the user has permission to select data from the 'employees' database?
hard
A. CREATE USER 'dave'@'192.168.1.100' IDENTIFIED BY 'safePass!'; GRANT SELECT ON employees TO 'dave'@'localhost';
B. CREATE USER 'dave' IDENTIFIED BY 'safePass!'; GRANT SELECT ON employees.* TO 'dave';
C. CREATE USER 'dave'@'%' IDENTIFIED BY 'safePass!'; GRANT ALL PRIVILEGES ON employees TO 'dave'@'%';
D. CREATE USER 'dave'@'192.168.1.100' IDENTIFIED BY 'safePass!'; GRANT SELECT ON employees.* TO 'dave'@'192.168.1.100';

Solution

  1. Step 1: Create user with correct host and password

    The user 'dave' must be created with host '192.168.1.100' and password 'safePass!'. CREATE USER 'dave'@'192.168.1.100' IDENTIFIED BY 'safePass!';
  2. Step 2: Grant correct permissions to the right user and host

    CREATE USER 'dave'@'192.168.1.100' IDENTIFIED BY 'safePass!'; GRANT SELECT ON employees.* TO 'dave'@'192.168.1.100'; grants SELECT on employees.* to 'dave'@'192.168.1.100', matching the user host. CREATE USER 'dave'@'192.168.1.100' IDENTIFIED BY 'safePass!'; GRANT SELECT ON employees TO 'dave'@'localhost'; grants to 'dave'@'localhost', which is incorrect. Options B and C have wrong host or privileges.
  3. Final Answer:

    CREATE USER 'dave'@'192.168.1.100' IDENTIFIED BY 'safePass!'; GRANT SELECT ON employees.* TO 'dave'@'192.168.1.100'; -> Option D
  4. Quick Check:

    User host and grant host must match [OK]
Hint: Match user host in CREATE USER and GRANT [OK]
Common Mistakes:
  • Granting permissions to wrong host
  • Using '%' wildcard when specific IP is required
  • Granting wrong privileges or missing database.*
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard