Details
-
Task
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
10.4.0-1
Description
In some cases there is a need to authenticate the same user in different means, more specifically multiple different authentications methods, or IDENTIFIED BY clauses for the same user. The adjusted CREATE USER syntax would allow multiple IDENTIFIED BY sections for one single user.
Questions:
- What logic should be applied? All of authentication methods should succeed? One of them should succeed? Should we allow complex rules like (first_auth OR second_auth) AND third_auth ? Or, instead of AND/OR may be we should go with PAM model or sufficient/required/etc?
- What syntax should be used?
- stuff like SET PASSWORD — will they be not allowed? allowed? if allowed, how will they work?
- where the new authentication rules will be stored, in what table, what columns?
Attachments
Issue Links
- blocks
-
MDEV-8375 Debian: Passwordless mysqld root login via socket auth bugfixing
-
- Closed
-
-
MDEV-12484 Enable unix socket authentication by default
-
- Closed
-
- causes
-
MDEV-21928 ALTER USER doesn't remove excess authentication plugins from mysql.global_priv
-
- Closed
-
-
MDEV-21929 Enhance ALTER USER for multiple authentication methods
-
- Open
-
- is blocked by
-
MDEV-17658 change the structure of mysql.user table
-
- Closed
-
- relates to
-
CONJ-675 Multiple alternative authentication methods for the same user java implementation
-
- Closed
-
-
MDEV-12320 configurable default authentication plugin for the server
-
- Stalled
-
-
MDEV-12321 authentication plugin: SET PASSWORD support
-
- Closed
-
-
MDEV-12715 remove mysql.user.password column
-
- Closed
-
-
MDEV-11328 provide a user administration to not allow user to change password
-
- Open
-
My concern is that it will be quite headache to parse/build these AND / OR expressions, e.g. for external tools or to build some advanced analytics from these expressions. Therefore I'd stick to Codd's rule #1 "All information in a relational data base is represented explicitly at the logical level and in exactly one way – by values in tables." and rule #4 "The data base description is represented at the logical level in the same way as ordinary data, so that authorized users can apply the same relational language to its interrogation as they apply to the regular data."
E.g. that should:
Of course one can say that after all that information will be stored in relational tables and tools could use such SQL commands to avoid parsing AND / OR . But that would mean that we will have to support two notations and always try to make sure that these notations interact in consistent way.
Thus I prefer to have single notation where we define / retrieve info with (simple) INSERT / DELETE / UPDATE / SELECT commands and should design syntax basing on that.