📖 Scenario: You are setting up a new database system for a small company. You need to create user accounts with specific permissions to control access to the database.
🎯 Goal: Create new users in MySQL with specific usernames and passwords, and grant them basic permissions.
📋 What You'll Learn
Create a user with a given username and password
Create a second user with a different username and password
Grant SELECT permission on a database to the first user
Grant ALL privileges on a database to the second user
💡 Why This Matters
🌍 Real World
Creating users and managing their permissions is essential for database security and access control in any organization.
💼 Career
Database administrators and backend developers often create and manage database users to ensure proper access and protect sensitive data.
Progress0 / 4 steps
1
Create the first user
Write a MySQL statement to create a user named 'user1' with the password 'password1'.
MySQL
Hint
Use the CREATE USER statement with the username and password exactly as shown.
2
Create the second user
Write a MySQL statement to create a user named 'user2' with the password 'password2'.
MySQL
Hint
Use the CREATE USER statement again with the new username and password.
3
Grant SELECT permission to the first user
Write a MySQL statement to grant SELECT permission on the database company_db to the user 'user1'.
MySQL
Hint
Use the GRANT SELECT ON database.* TO user syntax to give read-only access.
4
Grant ALL privileges to the second user
Write a MySQL statement to grant ALL privileges on the database company_db to the user 'user2'.
MySQL
Hint
Use the GRANT ALL PRIVILEGES ON database.* TO user syntax to give full access.
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
Step 1: Understand the purpose of CREATE USER
The CREATE USER command is used to add a new user account to the MySQL server.
Step 2: Differentiate from other user commands
Deleting users uses DROP USER, changing passwords uses ALTER USER, and listing users requires querying system tables.
Final Answer:
To add a new user who can access the database -> Option A
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
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.
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.
Final Answer:
CREATE USER 'alice'@'%' IDENTIFIED BY 'mypassword'; -> Option C
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
Step 1: Analyze the command
The command creates a user named 'bob' who can connect only from 'localhost' with password 'secret'.
Step 2: Understand host specification
The '@localhost' means the user can connect only from the local machine, not from other hosts.
Final Answer:
A new user 'bob' is created who can connect only from localhost -> Option A
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
Step 1: Check syntax requirements for CREATE USER
MySQL requires specifying the host part after the username, like 'user'@'host'.
Step 2: Identify the missing part
The command misses '@host' after 'carol', which causes a syntax error.
Final Answer:
Missing host part after username -> Option B
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
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!';
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.
Final Answer:
CREATE USER 'dave'@'192.168.1.100' IDENTIFIED BY 'safePass!'; GRANT SELECT ON employees.* TO 'dave'@'192.168.1.100'; -> Option D
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 unknownstrongwhile earning +1 Grip toward your certificate.