Bird
Raised Fist0
MySQLquery~10 mins

Granting privileges in MySQL - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to grant SELECT privilege on the database 'shop' to user 'alice'.

MySQL
GRANT [1] ON shop.* TO 'alice'@'localhost';
Drag options to blanks, or click blank then click option'
AUPDATE
BINSERT
CSELECT
DDELETE
Attempts:
3 left
💡 Hint
Common Mistakes
Using INSERT or UPDATE instead of SELECT.
Forgetting to specify the database and tables.
2fill in blank
medium

Complete the code to grant all privileges on the 'employees' table to user 'bob'.

MySQL
GRANT [1] ON company.employees TO 'bob'@'%';
Drag options to blanks, or click blank then click option'
AALL PRIVILEGES
BSELECT
CUPDATE
DDELETE
Attempts:
3 left
💡 Hint
Common Mistakes
Using only SELECT or UPDATE instead of ALL PRIVILEGES.
Not specifying the correct table.
3fill in blank
hard

Complete the code to grant INSERT privilege on all tables in 'sales' database to user 'carol'.

MySQL
GRANT [1] ON sales.* TO 'carol'@'localhost';
Drag options to blanks, or click blank then click option'
AINSERT ON *
BINSERT ON sales
CINSERT ON sales.*
DINSERT
Attempts:
3 left
💡 Hint
Common Mistakes
Including ON in the privilege part.
Not specifying tables with .* after database.
4fill in blank
hard

Fill both blanks to grant DELETE and UPDATE privileges on 'inventory' database to user 'dave'.

MySQL
GRANT [1], [2] ON inventory.* TO 'dave'@'localhost';
Drag options to blanks, or click blank then click option'
ADELETE
BUPDATE
CSELECT
DINSERT
Attempts:
3 left
💡 Hint
Common Mistakes
Using SELECT or INSERT instead of DELETE or UPDATE.
Not separating privileges with a comma.
5fill in blank
hard

Fill the blanks to grant SELECT privilege on 'reports' database and flush privileges.

MySQL
GRANT [1] ON reports.* TO 'eve'@'%';
[2];
Drag options to blanks, or click blank then click option'
ASELECT
BFLUSH PRIVILEGES
CCOMMIT
DREVOKE
Attempts:
3 left
💡 Hint
Common Mistakes
Using REVOKE instead of FLUSH PRIVILEGES.
Not flushing privileges after grant.

Practice

(1/5)
1. What does the GRANT SELECT ON database.* TO 'user'@'host'; command do in MySQL?
easy
A. Allows the user to read data from all tables in the specified database.
B. Allows the user to modify data in all tables in the specified database.
C. Creates a new user with read access to the database.
D. Deletes all data from the specified database.

Solution

  1. Step 1: Understand the GRANT command

    The GRANT command is used to give specific permissions to a user on a database or table.
  2. Step 2: Analyze the SELECT privilege

    SELECT privilege allows reading data but not modifying it.
  3. Final Answer:

    Allows the user to read data from all tables in the specified database. -> Option A
  4. Quick Check:

    GRANT SELECT = read permission [OK]
Hint: SELECT privilege means read-only access [OK]
Common Mistakes:
  • Confusing SELECT with UPDATE or DELETE privileges
  • Thinking GRANT creates a user
  • Assuming it deletes data
2. Which of the following is the correct syntax to grant all privileges on the shop database to user 'alice' connecting from any host?
easy
A. GRANT ALL PRIVILEGES ON shop.* TO 'alice'@'%';
B. GRANT ALL PRIVILEGES ON shop TO 'alice'@'%';
C. GRANT ALL ON shop.* TO 'alice';
D. GRANT ALL PRIVILEGES TO 'alice'@'%' ON shop.*;

Solution

  1. Step 1: Check the database and user format

    The database must be followed by .* to specify all tables, and user must include host.
  2. Step 2: Verify the correct order of clauses

    The syntax is: GRANT privileges ON database.* TO 'user'@'host';
  3. Final Answer:

    GRANT ALL PRIVILEGES ON shop.* TO 'alice'@'%'; -> Option A
  4. Quick Check:

    Correct syntax = GRANT ALL PRIVILEGES ON shop.* TO 'alice'@'%'; [OK]
Hint: Use database.* to grant on all tables [OK]
Common Mistakes:
  • Omitting .* after database name
  • Placing TO clause incorrectly
  • Not specifying host with user
3. Given the commands:
GRANT SELECT, INSERT ON sales.* TO 'bob'@'localhost';
SHOW GRANTS FOR 'bob'@'localhost';

What will the SHOW GRANTS output include?
medium
A. GRANT ALL PRIVILEGES ON sales.* TO 'bob'@'localhost'
B. GRANT SELECT ON sales.* TO 'bob'@'localhost'
C. GRANT SELECT, INSERT ON sales.* TO 'bob'@'localhost'
D. No privileges granted

Solution

  1. Step 1: Understand the GRANT command given

    The user 'bob' is granted SELECT and INSERT privileges on all tables in the sales database.
  2. Step 2: Interpret SHOW GRANTS output

    SHOW GRANTS displays the exact privileges granted, so it will list SELECT and INSERT on sales.* for bob.
  3. Final Answer:

    GRANT SELECT, INSERT ON sales.* TO 'bob'@'localhost' -> Option C
  4. Quick Check:

    SHOW GRANTS matches granted privileges [OK]
Hint: SHOW GRANTS shows exact privileges granted [OK]
Common Mistakes:
  • Assuming ALL PRIVILEGES are granted
  • Ignoring INSERT privilege
  • Thinking SHOW GRANTS returns no rows
4. Identify the error in the following command:
GRANT UPDATE, DELETE ON * TO 'carol'@'localhost';
medium
A. Host '%' must be used instead of 'localhost'
B. User name must be in double quotes
C. Privileges UPDATE and DELETE cannot be granted together
D. Missing database or table name after ON

Solution

  1. Step 1: Check the ON clause syntax

    The ON clause requires a database or table name, e.g., database.* or database.table.
  2. Step 2: Identify the missing part

    The command uses * alone, which is invalid syntax in MySQL for ON.
  3. Final Answer:

    Missing database or table name after ON -> Option D
  4. Quick Check:

    ON must specify database or table [OK]
Hint: ON must specify database or table, not just * [OK]
Common Mistakes:
  • Using * alone without database name
  • Using wrong quotes for user
  • Assuming localhost is invalid host
5. You want to allow user 'dave' to create new tables only in the inventory database but not modify data. Which GRANT command is correct?
hard
A. GRANT ALL PRIVILEGES ON inventory.* TO 'dave'@'localhost';
B. GRANT CREATE ON inventory.* TO 'dave'@'localhost';
C. GRANT CREATE, INSERT ON inventory.* TO 'dave'@'localhost';
D. GRANT CREATE ON *.* TO 'dave'@'localhost';

Solution

  1. Step 1: Identify the needed privilege

    To create tables, the CREATE privilege is required; INSERT or ALL PRIVILEGES would allow data changes.
  2. Step 2: Scope the privilege to the inventory database

    Granting on inventory.* limits the permission to that database only.
  3. Step 3: Check user and host format

    User 'dave'@'localhost' is correctly specified.
  4. Final Answer:

    GRANT CREATE ON inventory.* TO 'dave'@'localhost'; -> Option B
  5. Quick Check:

    CREATE only on inventory = GRANT CREATE ON inventory.* TO 'dave'@'localhost'; [OK]
Hint: Grant only CREATE on specific database for table creation [OK]
Common Mistakes:
  • Granting ALL PRIVILEGES instead of just CREATE
  • Including INSERT which allows data changes
  • Granting on *.* instead of specific 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