Details
-
Task
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
None
Description
The suggestion:
Create new table
CREATE TABLE mysql.global_priv ( |
Host char(60) binary DEFAULT '' NOT NULL, |
User char(80) binary DEFAULT '' NOT NULL, |
data JSON,
|
UNIQUE(host,user) |
)
|
The data might looks like
{
|
"SELECT":"Y", |
"SUPER":"N", |
...
|
"plugin":"mysql_native_password", |
...
|
}
|
and a view:
CREATE VIEW mysql.user AS SELECT |
Host, User, |
IF(JSON_VALUE(data,"plugin") IN ("mysql_native_password", "mysql_old_password"), |
JSON_VALUE(data, "authentication_string"),"") as Password |
...
|
FROM mysql.global_priv; |
the view will show the same data that old mysql.user table had.
The script mysql_fix_system_tables.sql should create new table and move data over.
Also it should convert grants on mysql.user to grants on mysql.global_priv.
Attachments
Issue Links
- blocks
-
MDEV-7597 Expiration of user passwords
-
- Closed
-
-
MDEV-11340 Allow multiple alternative authentication methods for the same user
-
- Closed
-
-
MDEV-13095 Implement user account locking
-
- Closed
-
- causes
-
MDEV-21486 Implement option for mysql_install_db that allows root@localhost to be replaced
-
- Closed
-
-
MDEV-21487 Implement option for mysql_upgrade that allows root@localhost to be replaced
-
- Closed
-
-
MDEV-29542 The first character in column name has lowercase instead of uppercase in view created on table " mysql.user"
-
- Closed
-
-
MDEV-32209 mariadb cannot import 10.3 or older mysqldump-produced dumps anymore
-
- Open
-
- includes
-
MDEV-12715 remove mysql.user.password column
-
- Closed
-
It would be very helpful to be able to link an account to some external system (e.g. a Request ID or a Ticket ID). This would make some compliance processes much easier. Allowing users to add to this JSON (or part of the JSON) would allow this. Maybe something that abstracts this like ALTER USER myuser COMMENT 'request_id: 1234'.