debugsqlModerate
Cannot GRANT privileges as root
Viewed 0 times
cannotgrantrootprivileges
Problem
Because of having some problems, I decided to re-create all users except for
The first command works, the second one fails with the message
I don't get why
I get
whatever this means. Am I missing a needed privilege? Can it be fixed?
I'm working with mysql Ver 14.14 Distrib 5.1.61, for debian-linux-gnu (x86_64).
root@localhost. This works fine, but the newly created user has no right to do anything. What I want is to simply give all rights to root at some local IP. I (as root@localhost) triedCREATE USER 'root'@'10.0.3.210';
GRANT ALL ON *.* TO 'root'@'10.0.3.210';The first command works, the second one fails with the message
ERROR 1045 (28000): Access denied for user 'root'@'localhost'I don't get why
root@localhost can't do everything, I'm sure I didn't mess with its privileges. FromSHOW GRANTS FOR 'root'@'localhost'I get
Grants for root@localhost
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, REPLICATION SLAVE, REPLICATION CLIENT, CREATE USER ON *.* TO 'root'@'localhost' WITH GRANT OPTION
GRANT ALL PRIVILEGES ON `%`.* TO 'root'@'localhost' WITH GRANT OPTIONwhatever this means. Am I missing a needed privilege? Can it be fixed?
I'm working with mysql Ver 14.14 Distrib 5.1.61, for debian-linux-gnu (x86_64).
Solution
Oh my goodness, I think the problem stems from mixing the mysql schema of different mysql versions. First of all, run this query:
For MySQL 8.0, you get 51 columns
Field
Type
Null
Key
Default
Extra
Host
char(255)
NO
PRI
User
char(32)
NO
PRI
Select_priv
enum('N','Y')
NO
N
Insert_priv
enum('N','Y')
NO
N
Update_priv
enum('N','Y')
NO
N
Delete_priv
enum('N','Y')
NO
N
Create_priv
enum('N','Y')
NO
N
Drop_priv
enum('N','Y')
NO
N
Reload_priv
enum('N','Y')
NO
N
Shutdown_priv
enum('N','Y')
NO
N
Process_priv
enum('N','Y')
NO
N
File_priv
enum('N','Y')
NO
N
Grant_priv
enum('N','Y')
NO
N
References_priv
enum('N','Y')
NO
N
Index_priv
enum('N','Y')
NO
N
Alter_priv
enum('N','Y')
NO
N
Show_db_priv
enum('N','Y')
NO
N
Super_priv
enum('N','Y')
NO
N
Create_tmp_table_priv
enum('N','Y')
NO
N
Lock_tables_priv
enum('N','Y')
NO
N
Execute_priv
enum('N','Y')
NO
N
Repl_slave_priv
enum('N','Y')
NO
N
Repl_client_priv
enum('N','Y')
NO
N
Create_view_priv
enum('N','Y')
NO
N
Show_view_priv
enum('N','Y')
NO
N
Create_routine_priv
enum('N','Y')
NO
N
Alter_routine_priv
enum('N','Y')
NO
N
Create_user_priv
enum('N','Y')
NO
N
Event_priv
enum('N','Y')
NO
N
Trigger_priv
enum('N','Y')
NO
N
Create_tablespace_priv
enum('N','Y')
NO
N
ssl_type
enum('','ANY','X509','SPECIFIED')
NO
ssl_cipher
blob
NO
NULL
x509_issuer
blob
NO
NULL
x509_subject
blob
NO
NULL
max_questions
int unsigned
NO
0
max_updates
int unsigned
NO
0
max_connections
int unsigned
NO
0
max_user_connections
int unsigned
NO
0
plugin
char(64)
NO
caching_sha2_password
authentication_string
text
YES
NULL
password_expired
enum('N','Y')
NO
N
password_last_changed
timestamp
YES
NULL
password_lifetime
smallint unsigned
YES
NULL
account_locked
enum('N','Y')
NO
N
Create_role_priv
enum('N','Y')
NO
N
Drop_role_priv
enum('N','Y')
NO
N
Password_reuse_history
smallint unsigned
YES
NULL
Password_reuse_time
smallint unsigned
YES
NULL
Password_require_current
enum('N','Y')
YES
NULL
User_attributes
json
YES
NULL
51 rows in set (0.00 sec)
For MySQL 5.6, you get 43 columns
```
mysql> desc mysql.user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N |
desc mysql.user;For MySQL 8.0, you get 51 columns
mysql> desc mysql.user;Field
Type
Null
Key
Default
Extra
Host
char(255)
NO
PRI
User
char(32)
NO
PRI
Select_priv
enum('N','Y')
NO
N
Insert_priv
enum('N','Y')
NO
N
Update_priv
enum('N','Y')
NO
N
Delete_priv
enum('N','Y')
NO
N
Create_priv
enum('N','Y')
NO
N
Drop_priv
enum('N','Y')
NO
N
Reload_priv
enum('N','Y')
NO
N
Shutdown_priv
enum('N','Y')
NO
N
Process_priv
enum('N','Y')
NO
N
File_priv
enum('N','Y')
NO
N
Grant_priv
enum('N','Y')
NO
N
References_priv
enum('N','Y')
NO
N
Index_priv
enum('N','Y')
NO
N
Alter_priv
enum('N','Y')
NO
N
Show_db_priv
enum('N','Y')
NO
N
Super_priv
enum('N','Y')
NO
N
Create_tmp_table_priv
enum('N','Y')
NO
N
Lock_tables_priv
enum('N','Y')
NO
N
Execute_priv
enum('N','Y')
NO
N
Repl_slave_priv
enum('N','Y')
NO
N
Repl_client_priv
enum('N','Y')
NO
N
Create_view_priv
enum('N','Y')
NO
N
Show_view_priv
enum('N','Y')
NO
N
Create_routine_priv
enum('N','Y')
NO
N
Alter_routine_priv
enum('N','Y')
NO
N
Create_user_priv
enum('N','Y')
NO
N
Event_priv
enum('N','Y')
NO
N
Trigger_priv
enum('N','Y')
NO
N
Create_tablespace_priv
enum('N','Y')
NO
N
ssl_type
enum('','ANY','X509','SPECIFIED')
NO
ssl_cipher
blob
NO
NULL
x509_issuer
blob
NO
NULL
x509_subject
blob
NO
NULL
max_questions
int unsigned
NO
0
max_updates
int unsigned
NO
0
max_connections
int unsigned
NO
0
max_user_connections
int unsigned
NO
0
plugin
char(64)
NO
caching_sha2_password
authentication_string
text
YES
NULL
password_expired
enum('N','Y')
NO
N
password_last_changed
timestamp
YES
NULL
password_lifetime
smallint unsigned
YES
NULL
account_locked
enum('N','Y')
NO
N
Create_role_priv
enum('N','Y')
NO
N
Drop_role_priv
enum('N','Y')
NO
N
Password_reuse_history
smallint unsigned
YES
NULL
Password_reuse_time
smallint unsigned
YES
NULL
Password_require_current
enum('N','Y')
YES
NULL
User_attributes
json
YES
NULL
51 rows in set (0.00 sec)
For MySQL 5.6, you get 43 columns
```
mysql> desc mysql.user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N |
Code Snippets
desc mysql.user;mysql> desc mysql.user;mysql> desc mysql.user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') |mysql> desc mysql.user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') |mysql> desc mysql.user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
Context
StackExchange Database Administrators Q#16397, answer score: 13
Revisions (0)
No revisions yet.