MySQL 8.0.41
Source Code Documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
auth_common.h
Go to the documentation of this file.
1/* Copyright (c) 2000, 2024, Oracle and/or its affiliates.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License, version 2.0,
5 as published by the Free Software Foundation.
6
7 This program is designed to work with certain software (including
8 but not limited to OpenSSL) that is licensed under separate terms,
9 as designated in a particular file or component or in included license
10 documentation. The authors of MySQL hereby grant you an additional
11 permission to link the program and your derivative works with the
12 separately licensed software that they have either included with
13 the program or referenced in the documentation.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License, version 2.0, for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24#ifndef AUTH_COMMON_INCLUDED
25#define AUTH_COMMON_INCLUDED
26
27#include <assert.h>
28#include <stddef.h>
29#include <stdint.h>
30#include <sys/types.h>
31#include <functional>
32#include <list>
33#include <memory>
34#include <string>
35#include <utility>
36#include <vector>
37
38#include "lex_string.h"
39#include "my_command.h"
40
41#include "my_hostname.h" // HOSTNAME_LENGTH
42#include "my_inttypes.h"
43#include "mysql_com.h" // USERNAME_LENGTH
44#include "sql/auth/auth_acls.h" // Access_bitmask
45#include "template_utils.h"
46
47#include <openssl/rsa.h>
48
49/* Forward Declarations */
50class Alter_info;
52class Item;
53class LEX_COLUMN;
54class String;
55class THD;
56struct CHARSET_INFO;
57struct GRANT_INFO;
59struct HA_CREATE_INFO;
60struct LEX_USER;
61template <class T>
62class List;
63typedef struct user_conn USER_CONN;
65class ACL_USER;
66struct TABLE;
67struct MEM_ROOT;
68class Table_ref;
69enum class role_enum;
70enum class Consumer_type;
71class LEX_GRANT_AS;
73typedef std::vector<ACL_temporary_lock_state> Lock_state_list;
74
75namespace consts {
76extern const std::string mysql;
77extern const std::string system_user;
78extern const std::string connection_admin;
79} // namespace consts
80
81/** user, host tuple which reference either acl_cache or g_default_roles */
82typedef std::pair<LEX_CSTRING, LEX_CSTRING> Auth_id_ref;
83typedef std::vector<Auth_id_ref> List_of_auth_id_refs;
84
85bool operator<(const Auth_id_ref &a, const Auth_id_ref &b);
86
88 /**
89 Access granted for all the requested privileges,
90 do not use the grant tables.
91 This flag is used only for the INFORMATION_SCHEMA privileges,
92 for compatibility reasons.
93 */
95 /** Access denied, do not use the grant tables. */
97 /** No decision yet, use the grant tables. */
99};
100
101/* Classes */
102
103/**
104 Per internal table ACL access rules.
105 This class is an interface.
106 Per table(s) specific access rule should be implemented in a subclass.
107 @sa ACL_internal_schema_access
108*/
110 public:
112
113 virtual ~ACL_internal_table_access() = default;
114
115 /**
116 Check access to an internal table.
117 When a privilege is granted, this method add the requested privilege
118 to save_priv.
119 @param want_access the privileges requested
120 @param [in, out] save_priv the privileges granted
121 @param any_combination_will_do true if it's enough to have any privilege
122 for any combination of the table columns.
123 @retval ACL_INTERNAL_ACCESS_GRANTED All the requested privileges
124 are granted, and saved in save_priv.
125 @retval ACL_INTERNAL_ACCESS_DENIED At least one of the requested
126 privileges was denied.
127 @retval ACL_INTERNAL_ACCESS_CHECK_GRANT No requested privilege
128 was denied, and grant should be checked for at least one
129 privilege. Requested privileges that are granted, if any, are saved
130 in save_priv.
131 */
133 Access_bitmask want_access, Access_bitmask *save_priv,
134 bool any_combination_will_do) const = 0;
135};
136
137/**
138 Per internal schema ACL access rules.
139 This class is an interface.
140 Each per schema specific access rule should be implemented
141 in a different subclass, and registered.
142 Per schema access rules can control:
143 - every schema privileges on schema.*
144 - every table privileges on schema.table
145 @sa ACL_internal_schema_registry
146*/
148 public:
150
151 virtual ~ACL_internal_schema_access() = default;
152
153 /**
154 Check access to an internal schema.
155 @param want_access the privileges requested
156 @param [in, out] save_priv the privileges granted
157 @param any_combination_will_do true if it's enough to have any privilege
158 for any combination of the table columns.
159 @retval ACL_INTERNAL_ACCESS_GRANTED All the requested privileges
160 are granted, and saved in save_priv.
161 @retval ACL_INTERNAL_ACCESS_DENIED At least one of the requested
162 privileges was denied.
163 @retval ACL_INTERNAL_ACCESS_CHECK_GRANT No requested privilege
164 was denied, and grant should be checked for at least one
165 privilege. Requested privileges that are granted, if any, are saved
166 in save_priv.
167 */
169 Access_bitmask want_access, Access_bitmask *save_priv,
170 bool any_combination_will_do) const = 0;
171
172 /**
173 Search for per table ACL access rules by table name.
174 @param name the table name
175 @return per table access rules, or NULL
176 */
177 virtual const ACL_internal_table_access *lookup(const char *name) const = 0;
178};
179
180/**
181 A registry for per internal schema ACL.
182 An 'internal schema' is a database schema maintained by the
183 server implementation, such as 'performance_schema' and 'INFORMATION_SCHEMA'.
184*/
186 public:
187 static void register_schema(const LEX_CSTRING &name,
188 const ACL_internal_schema_access *access);
189 static const ACL_internal_schema_access *lookup(const char *name);
190};
191
192/**
193 Extension of ACL_internal_schema_access for Information Schema
194*/
196 public:
198
199 ~IS_internal_schema_access() override = default;
200
202 Access_bitmask *save_priv,
203 bool any_combination_will_do) const override;
204
205 const ACL_internal_table_access *lookup(const char *name) const override;
206};
207
208/* Data Structures */
209
210extern const std::vector<std::string> global_acls_vector;
211
237
292
303
315
326
338
347
355
363
371
372/* When we run mysql_upgrade we must make sure that the server can be run
373 using previous mysql.user table schema during acl_load.
374
375 User_table_schema is a common interface for the current and the
376 previous mysql.user table schema.
377 */
379 public:
380 virtual uint host_idx() = 0;
381 virtual uint user_idx() = 0;
382 virtual uint password_idx() = 0;
383 virtual uint select_priv_idx() = 0;
384 virtual uint insert_priv_idx() = 0;
385 virtual uint update_priv_idx() = 0;
386 virtual uint delete_priv_idx() = 0;
387 virtual uint create_priv_idx() = 0;
388 virtual uint drop_priv_idx() = 0;
389 virtual uint reload_priv_idx() = 0;
390 virtual uint shutdown_priv_idx() = 0;
391 virtual uint process_priv_idx() = 0;
392 virtual uint file_priv_idx() = 0;
393 virtual uint grant_priv_idx() = 0;
395 virtual uint index_priv_idx() = 0;
396 virtual uint alter_priv_idx() = 0;
397 virtual uint show_db_priv_idx() = 0;
398 virtual uint super_priv_idx() = 0;
401 virtual uint execute_priv_idx() = 0;
409 virtual uint event_priv_idx() = 0;
410 virtual uint trigger_priv_idx() = 0;
414 virtual uint ssl_type_idx() = 0;
415 virtual uint ssl_cipher_idx() = 0;
416 virtual uint x509_issuer_idx() = 0;
417 virtual uint x509_subject_idx() = 0;
418 virtual uint max_questions_idx() = 0;
419 virtual uint max_updates_idx() = 0;
422 virtual uint plugin_idx() = 0;
430 // Added in 8.0.13
432 // Added in 8.0.14
434
435 virtual ~User_table_schema() = default;
436};
437
438/*
439 This class describes indices for the current mysql.user table schema.
440 */
442 public:
443 uint host_idx() override { return MYSQL_USER_FIELD_HOST; }
444 uint user_idx() override { return MYSQL_USER_FIELD_USER; }
445 // not available
446 uint password_idx() override {
447 assert(0);
449 }
463 }
470 }
474 }
477 }
481 }
484 }
487 }
491 }
494 }
497 }
502 }
511 }
514 }
518 }
521 }
524 }
527 }
531 }
534 }
537 }
540 }
541};
542
543/*
544 This class describes indices for the old mysql.user table schema.
545 */
547 public:
593 };
594
607 }
613 }
620 }
623 }
627 }
630 }
633 }
636 }
639 }
642 }
645 }
650 }
657 }
661 }
664 }
668 }
671 }
672
673 // those fields are not available in 5.6 db schema
676 }
683 }
687 }
689};
690
692 public:
694 return is_old_user_table_schema(table)
695 ? implicit_cast<User_table_schema *>(new User_table_old_schema())
696 : implicit_cast<User_table_schema *>(
698 }
699
700 virtual bool is_old_user_table_schema(TABLE *table);
701 virtual ~User_table_schema_factory() = default;
702};
703
706extern const char *any_db; // Special symbol for check_access
707/** controls the extra checks on plugin availability for mysql.user records */
708
709extern bool validate_user_plugins;
710
711/* Function Declarations */
712
713/* sql_authentication */
714
715int set_default_auth_plugin(char *plugin_name, size_t plugin_name_length);
717
718void acl_log_connect(const char *user, const char *host, const char *auth_as,
719 const char *db, THD *thd,
722bool acl_check_host(THD *thd, const char *host, const char *ip);
723
724/*
725 User Attributes are the once which are defined during CREATE/ALTER/GRANT
726 statement. These attributes are divided into following categories.
727*/
728
729#define NONE_ATTR 0L
730#define DEFAULT_AUTH_ATTR (1L << 0) /* update defaults auth */
731#define PLUGIN_ATTR (1L << 1) /* update plugin */
732 /* authentication_string */
733#define SSL_ATTR (1L << 2) /* ex: SUBJECT,CIPHER.. */
734#define RESOURCE_ATTR (1L << 3) /* ex: MAX_QUERIES_PER_HOUR.. */
735#define PASSWORD_EXPIRE_ATTR (1L << 4) /* update password expire col */
736#define ACCESS_RIGHTS_ATTR (1L << 5) /* update privileges */
737#define ACCOUNT_LOCK_ATTR (1L << 6) /* update account lock status */
738#define DIFFERENT_PLUGIN_ATTR \
739 (1L << 7) /* updated plugin with a different value */
740#define USER_ATTRIBUTES (1L << 8) /* Request to update user attributes */
741
742/* sql_user */
743void log_user(THD *thd, String *str, LEX_USER *user, bool comma);
744bool check_change_password(THD *thd, const char *host, const char *user,
745 bool retain_current_password);
746bool change_password(THD *thd, LEX_USER *user, const char *password,
747 const char *current_password,
748 bool retain_current_password);
749bool mysql_create_user(THD *thd, List<LEX_USER> &list, bool if_not_exists,
750 bool is_role);
751bool mysql_alter_user(THD *thd, List<LEX_USER> &list, bool if_exists);
752bool mysql_drop_user(THD *thd, List<LEX_USER> &list, bool if_exists,
753 bool drop_role);
756
757/* sql_auth_cache */
758void init_acl_memory();
759int wild_case_compare(CHARSET_INFO *cs, const char *str, const char *wildstr);
760int wild_case_compare(CHARSET_INFO *cs, const char *str, size_t str_len,
761 const char *wildstr, size_t wildstr_len);
762bool hostname_requires_resolving(const char *hostname);
763bool acl_init(bool dont_read_acl_tables);
764bool is_acl_inited();
765void acl_free(bool end = false);
766bool check_engine_type_for_acl_table(THD *thd, bool mdl_locked);
768void grant_free(void);
769bool reload_acl_caches(THD *thd, bool mdl_locked,
770 bool preserve_temporary_account_locking,
771 Lock_state_list *modified_user_lock_state_list);
772Access_bitmask acl_get(THD *thd, const char *host, const char *ip,
773 const char *user, const char *db, bool db_is_pattern);
774bool is_acl_user(THD *thd, const char *host, const char *user);
775bool acl_getroot(THD *thd, Security_context *sctx, const char *user,
776 const char *host, const char *ip, const char *db);
777bool check_acl_tables_intact(THD *thd, bool mdl_locked);
778bool check_acl_tables_intact(THD *thd, Table_ref *tables);
779void notify_flush_event(THD *thd);
781void append_auth_id_string(const THD *thd, const char *user, size_t user_len,
782 const char *host, size_t host_len, String *str);
783
784/* sql_authorization */
785bool skip_grant_tables();
787bool mysql_set_role_default(THD *thd);
788bool mysql_set_active_role_all(THD *thd, const List<LEX_USER> *except_users);
789bool mysql_set_active_role(THD *thd, const List<LEX_USER> *role_list);
790bool mysql_grant(THD *thd, const char *db, List<LEX_USER> &list,
791 Access_bitmask rights, bool revoke_grant, bool is_proxy,
792 const List<LEX_CSTRING> &dynamic_privilege,
793 bool grant_all_current_privileges, LEX_GRANT_AS *grant_as);
794bool mysql_routine_grant(THD *thd, Table_ref *table, bool is_proc,
795 List<LEX_USER> &user_list, Access_bitmask rights,
796 bool revoke, bool write_to_binlog);
797int mysql_table_grant(THD *thd, Table_ref *table, List<LEX_USER> &user_list,
798 List<LEX_COLUMN> &column_list,
799 Access_bitmask Access_bitmask, bool revoke);
800bool check_grant(THD *thd, Access_bitmask want_access, Table_ref *tables,
801 bool any_combination_will_do, uint number, bool no_errors);
802bool check_grant_column(THD *thd, GRANT_INFO *grant, const char *db_name,
803 const char *table_name, const char *name, size_t length,
804 Security_context *sctx, Access_bitmask want_privilege);
805bool check_column_grant_in_table_ref(THD *thd, Table_ref *table_ref,
806 const char *name, size_t length,
807 Access_bitmask want_privilege);
808bool check_grant_all_columns(THD *thd, Access_bitmask want_access,
810bool check_grant_routine(THD *thd, Access_bitmask want_access, Table_ref *procs,
811 bool is_proc, bool no_error);
812bool check_grant_db(THD *thd, const char *db,
813 const bool check_table_grant = false);
814bool acl_check_proxy_grant_access(THD *thd, const char *host, const char *user,
815 bool with_grant);
816void get_privilege_desc(char *to, uint max_length, Access_bitmask access);
817void get_mqh(THD *thd, const char *user, const char *host, USER_CONN *uc);
820 const char *db_name, const char *table_name,
821 const char *field_name);
822bool mysql_show_grants(THD *, LEX_USER *, const List_of_auth_id_refs &, bool,
823 bool);
824bool mysql_show_create_user(THD *thd, LEX_USER *user, bool are_both_users_same);
826bool sp_revoke_privileges(THD *thd, const char *sp_db, const char *sp_name,
827 bool is_proc);
828bool sp_grant_privileges(THD *thd, const char *sp_db, const char *sp_name,
829 bool is_proc);
831 const char *db, const char *table);
832int fill_schema_user_privileges(THD *thd, Table_ref *tables, Item *cond);
833int fill_schema_schema_privileges(THD *thd, Table_ref *tables, Item *cond);
834int fill_schema_table_privileges(THD *thd, Table_ref *tables, Item *cond);
835int fill_schema_column_privileges(THD *thd, Table_ref *tables, Item *cond);
837 GRANT_INTERNAL_INFO *grant_internal_info, const char *schema_name);
838
839bool lock_tables_precheck(THD *thd, Table_ref *tables);
840bool create_table_precheck(THD *thd, Table_ref *tables,
842bool check_fk_parent_table_access(THD *thd, HA_CREATE_INFO *create_info,
843 Alter_info *alter_info);
845 bool *fake_lock_tables_acl);
846bool check_readonly(THD *thd, bool err_if_readonly);
847void err_readonly(THD *thd);
848
850
851bool check_one_table_access(THD *thd, Access_bitmask privilege,
852 Table_ref *tables);
853bool check_single_table_access(THD *thd, Access_bitmask privilege,
854 Table_ref *tables, bool no_errors);
855bool check_routine_access(THD *thd, Access_bitmask want_access, const char *db,
856 char *name, bool is_proc, bool no_errors);
857bool check_some_access(THD *thd, Access_bitmask want_access, Table_ref *table);
858bool has_full_view_routine_access(THD *thd, const char *db,
859 const char *definer_user,
860 const char *definer_host);
861bool has_partial_view_routine_access(THD *thd, const char *db,
862 const char *routine_name, bool is_proc);
863bool check_access(THD *thd, Access_bitmask want_access, const char *db,
864 Access_bitmask *save_priv,
865 GRANT_INTERNAL_INFO *grant_internal_info,
866 bool dont_check_global_grants, bool no_errors);
867bool check_table_access(THD *thd, Access_bitmask requirements,
868 Table_ref *tables,
869 bool any_combination_of_privileges_will_do, uint number,
870 bool no_errors);
872bool mysql_grant_role(THD *thd, const List<LEX_USER> *users,
873 const List<LEX_USER> *roles, bool with_admin_opt);
874bool mysql_revoke_role(THD *thd, const List<LEX_USER> *users,
875 const List<LEX_USER> *roles);
877
878bool is_granted_table_access(THD *thd, Access_bitmask required_acl,
879 Table_ref *table);
880
882 const List<LEX_USER> *users,
883 const List<LEX_USER> *roles);
884void roles_graphml(THD *thd, String *);
885bool has_grant_role_privilege(THD *thd, const List<LEX_USER> *roles);
887std::string create_authid_str_from(const LEX_USER *user);
888std::pair<std::string, std::string> get_authid_from_quoted_string(
889 std::string str);
890void append_identifier(String *packet, const char *name, size_t length);
891bool is_role_id(LEX_USER *authid);
892void shutdown_acl_cache();
894 LEX_CSTRING role_host);
895bool is_mandatory_role(LEX_CSTRING role, LEX_CSTRING role_host,
896 bool *is_mandatory);
897bool check_global_access(THD *thd, Access_bitmask want_access);
898
899/* sql_user_table */
901bool is_acl_table_name(const char *name);
902#ifndef NDEBUG
903bool is_acl_table(const TABLE *table);
904#endif
905
912
914extern bool opt_auto_generate_certs;
915bool do_auto_cert_generation(ssl_artifacts_status auto_detection_status,
916 const char **ssl_ca, const char **ssl_key,
917 const char **ssl_cert);
918
919#define DEFAULT_SSL_CA_CERT "ca.pem"
920#define DEFAULT_SSL_CA_KEY "ca-key.pem"
921#define DEFAULT_SSL_SERVER_CERT "server-cert.pem"
922#define DEFAULT_SSL_SERVER_KEY "server-key.pem"
923
924void update_mandatory_roles(void);
925bool check_authorization_id_string(THD *thd, LEX_STRING &mandatory_roles);
926void func_current_role(const THD *thd, String *active_role);
927
929
933 virtual ~Security_context_policy() = default;
936};
937
938typedef std::function<bool(Security_context *,
941
942template <class Derived>
944 public:
945 bool operator()(Security_context *sctx, Operation op) override {
946 if (op == Precheck && static_cast<Derived *>(this)->precheck(sctx))
947 return true;
948 if (op == Execute && static_cast<Derived *>(this)->create(sctx))
949 return true;
950 return false;
951 }
952};
953
954template <class Derived>
956 public:
957 bool operator()(Security_context *sctx, Operation op) override {
958 if (op == Precheck && static_cast<Derived *>(this)->precheck(sctx))
959 return true;
960 if (op == Execute && static_cast<Derived *>(this)->grant_privileges(sctx))
961 return true;
962 return false;
963 }
964};
965
966template <typename T>
967using Sctx_ptr = std::unique_ptr<T, std::function<void(T *)>>;
968
969/**
970 Factory for creating any Security_context given a pre-constructed policy.
971*/
973 public:
974 /**
975 Default Security_context factory implementation. Given two policies and
976 a authid this class returns a Security_context.
977 @param thd The thread handle
978 @param user User name associated with auth id
979 @param host Host name associated with auth id
980 @param extend_user_profile The policy for creating the user profile
981 @param priv The policy for authorizing the authid to
982 use the server.
983 @param static_priv Static privileges for authid.
984 @param drop_policy The policy for deleting the authid and
985 revoke privileges
986 */
987 Security_context_factory(THD *thd, std::string user, std::string host,
988 Security_context_functor extend_user_profile,
990 Security_context_functor static_priv,
991 std::function<void(Security_context *)> drop_policy)
992 : m_thd(thd),
993 m_user(std::move(user)),
994 m_host(std::move(host)),
995 m_user_profile(std::move(extend_user_profile)),
996 m_privileges(std::move(priv)),
997 m_static_privileges(std::move(static_priv)),
998 m_drop_policy(std::move(drop_policy)) {}
999
1001
1002 private:
1004
1006 std::string m_user;
1007 std::string m_host;
1011 const std::function<void(Security_context *)> m_drop_policy;
1012};
1013
1014class Default_local_authid : public Create_authid<Default_local_authid> {
1015 public:
1016 Default_local_authid(const THD *thd);
1017 bool precheck(Security_context *sctx);
1018 bool create(Security_context *sctx);
1019
1020 private:
1021 const THD *m_thd;
1022};
1023
1024/**
1025 Grant the privilege temporarily to the in-memory global privileges map.
1026 This class is not thread safe.
1027 */
1029 : public Grant_privileges<Grant_temporary_dynamic_privileges> {
1030 public:
1032 std::vector<std::string> privs);
1033 bool precheck(Security_context *sctx);
1035
1036 private:
1037 const THD *m_thd;
1038 const std::vector<std::string> m_privs;
1039};
1040
1042 public:
1043 explicit Drop_temporary_dynamic_privileges(std::vector<std::string> privs)
1044 : m_privs(std::move(privs)) {}
1045 void operator()(Security_context *sctx);
1046
1047 private:
1048 std::vector<std::string> m_privs;
1049};
1050
1052 : public Grant_privileges<Grant_temporary_static_privileges> {
1053 public:
1054 Grant_temporary_static_privileges(const THD *thd, const Access_bitmask privs);
1055 bool precheck(Security_context *sctx);
1057
1058 private:
1059 /** THD handle */
1060 const THD *m_thd;
1061
1062 /** Privileges */
1064};
1065
1066bool operator==(const LEX_CSTRING &a, const LEX_CSTRING &b);
1067bool is_partial_revoke_exists(THD *thd);
1068void set_system_user_flag(THD *thd, bool check_for_main_security_ctx = false);
1070 bool check_for_main_security_ctx = false);
1071
1072/**
1073 Storage container for default auth ids. Default roles are only weakly
1074 depending on ACL_USERs. You can retain a default role even if the
1075 corresponding ACL_USER is missing in the acl_cache.
1076*/
1077class Auth_id {
1078 public:
1080 Auth_id(const char *user, size_t user_len, const char *host, size_t host_len);
1081 Auth_id(const Auth_id_ref &id);
1082 Auth_id(const LEX_CSTRING &user, const LEX_CSTRING &host);
1083 Auth_id(const std::string &user, const std::string &host);
1084 Auth_id(const LEX_USER *lex_user);
1085 Auth_id(const ACL_USER *acl_user);
1086
1088 Auth_id(const Auth_id &id);
1089 Auth_id &operator=(const Auth_id &) = default;
1090
1091 bool operator<(const Auth_id &id) const;
1092 void auth_str(std::string *out) const;
1093 std::string auth_str() const;
1094 const std::string &user() const;
1095 const std::string &host() const;
1096
1097 private:
1098 void create_key();
1099 /** User part */
1100 std::string m_user;
1101 /** Host part */
1102 std::string m_host;
1103 /**
1104 Key: Internal representation mainly to facilitate use of
1105 Auth_id class in standard container.
1106 Format: 'user\0host\0'
1107 */
1108 std::string m_key;
1109};
1110
1111/*
1112 As of now Role_id is an alias of Auth_id.
1113 We may extend the Auth_id as Role_id once
1114 more substances are added to latter.
1115*/
1117
1118/**
1119 Length of string buffer, that is enough to contain
1120 username and hostname parts of the user identifier with trailing zero in
1121 MySQL standard format:
1122 user_name_part\@host_name_part\\0
1123*/
1124static constexpr int USER_HOST_BUFF_SIZE =
1126
1128 std::string user;
1129 std::string host;
1130 std::string password;
1132};
1133
1134void generate_random_password(std::string *password, uint32_t);
1135typedef std::list<random_password_info> Userhostpassword_list;
1137 const Userhostpassword_list &generated_passwords);
1138bool lock_and_get_mandatory_roles(std::vector<Role_id> *mandatory_roles);
1140 const std::string &json_blob, bool expect_text);
1141
1142/* helper method to check if sandbox mode should be turned off or not */
1144
1145#if OPENSSL_VERSION_NUMBER >= 0x30000000L
1146bool decrypt_RSA_private_key(uchar *pkt, int cipher_length,
1147 unsigned char *plain_text, size_t plain_text_len,
1148 EVP_PKEY *private_key);
1149#else /* OPENSSL_VERSION_NUMBER >= 0x30000000L */
1150bool decrypt_RSA_private_key(uchar *pkt, int cipher_length,
1151 unsigned char *plain_text, size_t plain_text_len,
1152 RSA *private_key);
1153#endif /* OPENSSL_VERSION_NUMBER >= 0x30000000L */
1154
1155#endif /* AUTH_COMMON_INCLUDED */
uint32_t Access_bitmask
Definition: auth_acls.h:34
mysql_dynamic_priv_table_field
Definition: auth_common.h:364
@ MYSQL_DYNAMIC_PRIV_FIELD_PRIV
Definition: auth_common.h:367
@ MYSQL_DYNAMIC_PRIV_FIELD_HOST
Definition: auth_common.h:366
@ MYSQL_DYNAMIC_PRIV_FIELD_USER
Definition: auth_common.h:365
@ MYSQL_DYNAMIC_PRIV_FIELD_COUNT
Definition: auth_common.h:369
@ MYSQL_DYNAMIC_PRIV_FIELD_WITH_GRANT_OPTION
Definition: auth_common.h:368
mysql_columns_priv_table_field
Definition: auth_common.h:316
@ MYSQL_COLUMNS_PRIV_FIELD_COLUMN_NAME
Definition: auth_common.h:321
@ MYSQL_COLUMNS_PRIV_FIELD_HOST
Definition: auth_common.h:317
@ MYSQL_COLUMNS_PRIV_FIELD_COLUMN_PRIV
Definition: auth_common.h:323
@ MYSQL_COLUMNS_PRIV_FIELD_TABLE_NAME
Definition: auth_common.h:320
@ MYSQL_COLUMNS_PRIV_FIELD_COUNT
Definition: auth_common.h:324
@ MYSQL_COLUMNS_PRIV_FIELD_DB
Definition: auth_common.h:318
@ MYSQL_COLUMNS_PRIV_FIELD_USER
Definition: auth_common.h:319
@ MYSQL_COLUMNS_PRIV_FIELD_TIMESTAMP
Definition: auth_common.h:322
void roles_graphml(THD *thd, String *)
Definition: sql_authorization.cc:4891
bool check_fk_parent_table_access(THD *thd, HA_CREATE_INFO *create_info, Alter_info *alter_info)
Checks foreign key's parent table access.
Definition: sql_authorization.cc:5925
bool check_grant(THD *thd, Access_bitmask want_access, Table_ref *tables, bool any_combination_will_do, uint number, bool no_errors)
Check table level grants.
Definition: sql_authorization.cc:3761
mysql_procs_priv_table_field
Definition: auth_common.h:304
@ MYSQL_PROCS_PRIV_FIELD_PROC_PRIV
Definition: auth_common.h:311
@ MYSQL_PROCS_PRIV_FIELD_ROUTINE_NAME
Definition: auth_common.h:308
@ MYSQL_PROCS_PRIV_FIELD_COUNT
Definition: auth_common.h:313
@ MYSQL_PROCS_PRIV_FIELD_HOST
Definition: auth_common.h:305
@ MYSQL_PROCS_PRIV_FIELD_DB
Definition: auth_common.h:306
@ MYSQL_PROCS_PRIV_FIELD_ROUTINE_TYPE
Definition: auth_common.h:309
@ MYSQL_PROCS_PRIV_FIELD_GRANTOR
Definition: auth_common.h:310
@ MYSQL_PROCS_PRIV_FIELD_USER
Definition: auth_common.h:307
@ MYSQL_PROCS_PRIV_FIELD_TIMESTAMP
Definition: auth_common.h:312
bool acl_check_host(THD *thd, const char *host, const char *ip)
Definition: sql_authentication.cc:2023
void get_privilege_desc(char *to, uint max_length, Access_bitmask access)
Definition: sql_authorization.cc:4518
bool lock_tables_precheck(THD *thd, Table_ref *tables)
Check privileges for LOCK TABLES statement.
Definition: sql_authorization.cc:1693
bool skip_grant_tables()
Definition: sql_auth_cache.cc:160
bool acl_check_proxy_grant_access(THD *thd, const char *host, const char *user, bool with_grant)
Definition: sql_authorization.cc:5545
bool check_global_access(THD *thd, Access_bitmask want_access)
check for global access and give descriptive error message if it fails.
Definition: sql_authorization.cc:5900
void func_current_role(const THD *thd, String *active_role)
Helper function for Item_func_current_role.
Definition: sql_authorization.cc:6261
uint32 global_password_history
Global sysvar: the number of old passwords to check in the history.
Definition: sql_auth_cache.cc:3809
bool mysql_alter_or_clear_default_roles(THD *thd, role_enum role_type, const List< LEX_USER > *users, const List< LEX_USER > *roles)
Set the default roles to NONE, ALL or list of authorization IDs as roles, depending upon the role_typ...
Definition: sql_authorization.cc:6402
int mysql_table_grant(THD *thd, Table_ref *table, List< LEX_USER > &user_list, List< LEX_COLUMN > &column_list, Access_bitmask Access_bitmask, bool revoke)
Definition: sql_authorization.cc:2622
int fill_schema_table_privileges(THD *thd, Table_ref *tables, Item *cond)
Definition: sql_authorization.cc:5747
void append_auth_id_string(const THD *thd, const char *user, size_t user_len, const char *host, size_t host_len, String *str)
Append the user@host to the str.
Definition: sql_auth_cache.cc:718
std::pair< LEX_CSTRING, LEX_CSTRING > Auth_id_ref
user, host tuple which reference either acl_cache or g_default_roles
Definition: auth_common.h:82
std::unique_ptr< T, std::function< void(T *)> > Sctx_ptr
Definition: auth_common.h:967
mysql_role_edges_table_field
Definition: auth_common.h:339
@ MYSQL_ROLE_EDGES_FIELD_TO_USER
Definition: auth_common.h:343
@ MYSQL_ROLE_EDGES_FIELD_WITH_ADMIN_OPTION
Definition: auth_common.h:344
@ MYSQL_ROLE_EDGES_FIELD_FROM_USER
Definition: auth_common.h:341
@ MYSQL_ROLE_EDGES_FIELD_TO_HOST
Definition: auth_common.h:342
@ MYSQL_ROLE_EDGES_FIELD_FROM_HOST
Definition: auth_common.h:340
@ MYSQL_ROLE_EDGES_FIELD_COUNT
Definition: auth_common.h:345
void acl_log_connect(const char *user, const char *host, const char *auth_as, const char *db, THD *thd, enum enum_server_command command)
Logging connection for the general query log, extracted from acl_authenticate() as it's reused at dif...
Definition: sql_authentication.cc:3690
bool is_acl_table_name(const char *name)
Check if given table name is a ACL table name.
Definition: sql_user_table.cc:2228
int fill_schema_schema_privileges(THD *thd, Table_ref *tables, Item *cond)
Definition: sql_authorization.cc:5685
std::function< bool(Security_context *, Security_context_policy::Operation)> Security_context_functor
Definition: auth_common.h:940
bool validate_user_plugins
controls the extra checks on plugin availability for mysql.user records
Definition: sql_auth_cache.cc:164
bool mysql_user_table_is_in_short_password_format
void acl_free(bool end=false)
Definition: sql_auth_cache.cc:1982
bool mysql_revoke_role(THD *thd, const List< LEX_USER > *users, const List< LEX_USER > *roles)
Definition: sql_authorization.cc:3075
bool check_acl_tables_intact(THD *thd, bool mdl_locked)
Opens the ACL tables and checks their sanity.
Definition: sql_auth_cache.cc:2106
bool mysql_show_grants(THD *, LEX_USER *, const List_of_auth_id_refs &, bool, bool)
SHOW GRANTS FOR user USING [ALL | role [,role ...]].
Definition: sql_authorization.cc:4785
void init_acl_memory()
Allocates the memory in the the global_acl_memory MEM_ROOT.
Definition: sql_auth_cache.cc:186
bool sp_grant_privileges(THD *thd, const char *sp_db, const char *sp_name, bool is_proc)
Grant EXECUTE,ALTER privilege for a stored procedure.
Definition: sql_authorization.cc:5387
mysql_db_table_field
Definition: auth_common.h:212
@ MYSQL_DB_FIELD_GRANT_PRIV
Definition: auth_common.h:222
@ MYSQL_DB_FIELD_DELETE_PRIV
Definition: auth_common.h:219
@ MYSQL_DB_FIELD_INDEX_PRIV
Definition: auth_common.h:224
@ MYSQL_DB_FIELD_UPDATE_PRIV
Definition: auth_common.h:218
@ MYSQL_DB_FIELD_CREATE_VIEW_PRIV
Definition: auth_common.h:228
@ MYSQL_DB_FIELD_ALTER_PRIV
Definition: auth_common.h:225
@ MYSQL_DB_FIELD_LOCK_TABLES_PRIV
Definition: auth_common.h:227
@ MYSQL_DB_FIELD_COUNT
Definition: auth_common.h:235
@ MYSQL_DB_FIELD_TRIGGER_PRIV
Definition: auth_common.h:234
@ MYSQL_DB_FIELD_CREATE_PRIV
Definition: auth_common.h:220
@ MYSQL_DB_FIELD_CREATE_ROUTINE_PRIV
Definition: auth_common.h:230
@ MYSQL_DB_FIELD_SELECT_PRIV
Definition: auth_common.h:216
@ MYSQL_DB_FIELD_EXECUTE_PRIV
Definition: auth_common.h:232
@ MYSQL_DB_FIELD_INSERT_PRIV
Definition: auth_common.h:217
@ MYSQL_DB_FIELD_EVENT_PRIV
Definition: auth_common.h:233
@ MYSQL_DB_FIELD_ALTER_ROUTINE_PRIV
Definition: auth_common.h:231
@ MYSQL_DB_FIELD_CREATE_TMP_TABLE_PRIV
Definition: auth_common.h:226
@ MYSQL_DB_FIELD_USER
Definition: auth_common.h:215
@ MYSQL_DB_FIELD_HOST
Definition: auth_common.h:213
@ MYSQL_DB_FIELD_DROP_PRIV
Definition: auth_common.h:221
@ MYSQL_DB_FIELD_DB
Definition: auth_common.h:214
@ MYSQL_DB_FIELD_SHOW_VIEW_PRIV
Definition: auth_common.h:229
@ MYSQL_DB_FIELD_REFERENCES_PRIV
Definition: auth_common.h:223
bool is_mandatory_role(LEX_CSTRING role, LEX_CSTRING role_host, bool *is_mandatory)
Determine if a role@role_host authid is a mandatory role.
Definition: sql_authorization.cc:6802
int acl_authenticate(THD *thd, enum_server_command command)
Perform the handshake, authorize the client and update thd sctx variables.
Definition: sql_authentication.cc:3826
const std::vector< std::string > global_acls_vector
Consts for static privileges.
Definition: auth_acls.cc:62
bool lock_and_get_mandatory_roles(std::vector< Role_id > *mandatory_roles)
Copy a list of mandatory role authorization IDs.
Definition: sql_authorization.cc:6314
Auth_id_ref create_authid_from(const LEX_USER *user)
Definition: sql_authorization.cc:6640
bool mysql_grant_role(THD *thd, const List< LEX_USER > *users, const List< LEX_USER > *roles, bool with_admin_opt)
Grants a list of roles to a list of users.
Definition: sql_authorization.cc:3304
bool check_change_password(THD *thd, const char *host, const char *user, bool retain_current_password)
Definition: sql_user.cc:153
int wild_case_compare(CHARSET_INFO *cs, const char *str, const char *wildstr)
Definition: sql_auth_cache.cc:803
bool mysql_alter_user_comment(THD *thd, const List< LEX_USER > *users, const std::string &json_blob, bool expect_text)
void get_mqh(THD *thd, const char *user, const char *host, USER_CONN *uc)
Definition: sql_auth_cache.cc:3221
bool is_acl_table(const TABLE *table)
Check if given TABLE* is a ACL table name.
Definition: sql_user_table.cc:2246
bool mysql_show_create_user(THD *thd, LEX_USER *user, bool are_both_users_same)
Auxiliary function for constructing CREATE USER sql for a given user.
Definition: sql_user.cc:256
bool is_granted_table_access(THD *thd, Access_bitmask required_acl, Table_ref *table)
Given a Table_ref object this function checks against.
Definition: sql_authorization.cc:2439
bool do_auto_cert_generation(ssl_artifacts_status auto_detection_status, const char **ssl_ca, const char **ssl_key, const char **ssl_cert)
Check auto_generate_certs option and generate SSL certificates if required.
Definition: sql_authentication.cc:5868
const char * any_db
Definition: sql_authorization.cc:499
bool check_lock_view_underlying_table_access(THD *thd, Table_ref *tbl, bool *fake_lock_tables_acl)
For LOCK TABLES on a view checks if user in which context view is executed or user that has initiated...
Definition: sql_authorization.cc:5989
void set_connection_admin_flag(THD *thd, bool check_for_main_security_ctx=false)
Set the connection_admin flag in the THD.
Definition: auth_common.cc:189
bool mysql_rename_user(THD *thd, List< LEX_USER > &list)
Definition: sql_user.cc:3203
bool grant_init(bool skip_grant_tables)
Initialize structures responsible for table/column-level privilege checking and load information for ...
Definition: sql_auth_cache.cc:2466
uint32 global_password_reuse_interval
Definition: auth_common.h:928
void commit_and_close_mysql_tables(THD *thd)
A helper function to commit statement transaction and close ACL tables after reading some data from t...
Definition: sql_user_table.cc:507
bool check_column_grant_in_table_ref(THD *thd, Table_ref *table_ref, const char *name, size_t length, Access_bitmask want_privilege)
Check the privileges for a column depending on the type of table.
Definition: sql_authorization.cc:4026
std::vector< Auth_id_ref > List_of_auth_id_refs
Definition: auth_common.h:83
std::string get_default_autnetication_plugin_name()
Return the default authentication plugin name.
Definition: sql_authentication.cc:1421
void set_system_user_flag(THD *thd, bool check_for_main_security_ctx=false)
Set the system_user flag in the THD.
Definition: auth_common.cc:166
bool acl_getroot(THD *thd, Security_context *sctx, const char *user, const char *host, const char *ip, const char *db)
Definition: sql_auth_cache.cc:1505
Access_bitmask get_table_grant(THD *thd, Table_ref *table)
Definition: sql_authorization.cc:4417
ulong get_global_acl_cache_size()
Definition: sql_auth_cache.cc:107
bool create_table_precheck(THD *thd, Table_ref *tables, Table_ref *create_table)
CREATE TABLE query pre-check.
Definition: sql_authorization.cc:1721
bool mysql_set_active_role_none(THD *thd)
Reset active roles.
Definition: sql_authorization.cc:6704
Access_bitmask acl_get(THD *thd, const char *host, const char *ip, const char *user, const char *db, bool db_is_pattern)
Get privilege for a host, user, and db combination.
Definition: sql_auth_cache.cc:1351
bool check_readonly(THD *thd, bool err_if_readonly)
Performs standardized check whether to prohibit (true) or allow (false) operations based on read_only...
Definition: sql_authorization.cc:1823
int set_default_auth_plugin(char *plugin_name, size_t plugin_name_length)
Initialize default authentication plugin based on command line options or configuration file settings...
Definition: sql_authentication.cc:1395
bool acl_init(bool dont_read_acl_tables)
Definition: sql_auth_cache.cc:1748
bool acl_can_access_user(THD *thd, LEX_USER *user)
Auxiliary function for the CAN_ACCESS_USER internal function used to check if a row from mysql....
Definition: sql_user.cc:205
bool check_routine_access(THD *thd, Access_bitmask want_access, const char *db, char *name, bool is_proc, bool no_errors)
Definition: sql_authorization.cc:1957
bool change_password(THD *thd, LEX_USER *user, const char *password, const char *current_password, bool retain_current_password)
Change a password hash for a user.
Definition: sql_user.cc:2015
std::list< random_password_info > Userhostpassword_list
Definition: auth_common.h:1135
const ACL_internal_schema_access * get_cached_schema_access(GRANT_INTERNAL_INFO *grant_internal_info, const char *schema_name)
Get a cached internal schema access.
Definition: sql_authorization.cc:1627
bool send_password_result_set(THD *thd, const Userhostpassword_list &generated_passwords)
Sends the result set of generated passwords to the client.
Definition: sql_user.cc:974
bool operator<(const Auth_id_ref &a, const Auth_id_ref &b)
Definition: sql_authorization.cc:7483
std::string create_authid_str_from(const LEX_USER *user)
Helper used for producing a key to a key-value-map.
Definition: sql_authorization.cc:6632
bool check_grant_all_columns(THD *thd, Access_bitmask want_access, Field_iterator_table_ref *fields)
check if a query can access a set of columns
Definition: sql_authorization.cc:4104
bool mysql_set_active_role_all(THD *thd, const List< LEX_USER > *except_users)
Activates all granted role in the current security context.
Definition: sql_authorization.cc:6748
bool mysql_revoke_all(THD *thd, List< LEX_USER > &list)
Definition: sql_authorization.cc:5129
ACL_internal_access_result
Definition: auth_common.h:87
@ ACL_INTERNAL_ACCESS_GRANTED
Access granted for all the requested privileges, do not use the grant tables.
Definition: auth_common.h:94
@ ACL_INTERNAL_ACCESS_CHECK_GRANT
No decision yet, use the grant tables.
Definition: auth_common.h:98
@ ACL_INTERNAL_ACCESS_DENIED
Access denied, do not use the grant tables.
Definition: auth_common.h:96
bool turn_off_sandbox_mode(THD *thd, LEX_USER *user)
Helper method to turn off sandbox mode once registration step is complete.
Definition: sql_user.cc:1018
mysql_password_history_table_field
Definition: auth_common.h:356
@ MYSQL_PASSWORD_HISTORY_FIELD_COUNT
Definition: auth_common.h:361
@ MYSQL_PASSWORD_HISTORY_FIELD_PASSWORD_TIMESTAMP
Definition: auth_common.h:359
@ MYSQL_PASSWORD_HISTORY_FIELD_HOST
Definition: auth_common.h:357
@ MYSQL_PASSWORD_HISTORY_FIELD_USER
Definition: auth_common.h:358
@ MYSQL_PASSWORD_HISTORY_FIELD_PASSWORD
Definition: auth_common.h:360
bool mysql_create_user(THD *thd, List< LEX_USER > &list, bool if_not_exists, bool is_role)
Definition: sql_user.cc:2752
bool check_table_access(THD *thd, Access_bitmask requirements, Table_ref *tables, bool any_combination_of_privileges_will_do, uint number, bool no_errors)
Check if the requested privileges exists in either User-, DB- or, tables- tables.
Definition: sql_authorization.cc:2334
void fill_effective_table_privileges(THD *thd, GRANT_INFO *grant, const char *db, const char *table)
Definition: sql_authorization.cc:5477
bool operator==(const LEX_CSTRING &a, const LEX_CSTRING &b)
Definition: sql_authorization.cc:7500
void get_default_roles(const Auth_id_ref &user, List_of_auth_id_refs &list)
Shallow copy a list of default role authorization IDs from an Role_id storage.
Definition: sql_authorization.cc:6292
int fill_schema_column_privileges(THD *thd, Table_ref *tables, Item *cond)
Definition: sql_authorization.cc:5812
bool check_table_encryption_admin_access(THD *thd)
Check if a current user has the privilege TABLE_ENCRYPTION_ADMIN required to create encrypted table.
Definition: sql_authorization.cc:2405
bool is_role_id(LEX_USER *authid)
Definition: sql_authorization.cc:781
bool is_granted_role(LEX_CSTRING user, LEX_CSTRING host, LEX_CSTRING role, LEX_CSTRING role_host)
This function works just like check_if_granted_role, but also guarantees that the proper lock is take...
Definition: sql_authorization.cc:6781
mysql_default_roles_table_field
Definition: auth_common.h:348
@ MYSQL_DEFAULT_ROLES_FIELD_DEFAULT_ROLE_USER
Definition: auth_common.h:352
@ MYSQL_DEFAULT_ROLES_FIELD_COUNT
Definition: auth_common.h:353
@ MYSQL_DEFAULT_ROLES_FIELD_DEFAULT_ROLE_HOST
Definition: auth_common.h:351
@ MYSQL_DEFAULT_ROLES_FIELD_HOST
Definition: auth_common.h:349
@ MYSQL_DEFAULT_ROLES_FIELD_USER
Definition: auth_common.h:350
void append_identifier(String *packet, const char *name, size_t length)
Convert and quote the given identifier if needed and append it to the target string.
Definition: sql_show.cc:1464
bool is_acl_user(THD *thd, const char *host, const char *user)
Definition: sql_auth_cache.cc:1223
void update_mandatory_roles(void)
Definition: sql_authorization.cc:7324
bool has_full_view_routine_access(THD *thd, const char *db, const char *definer_user, const char *definer_host)
Check if user has full access to view routine's properties (i.e including stored routine code).
Definition: sql_authorization.cc:2039
bool mysql_routine_grant(THD *thd, Table_ref *table, bool is_proc, List< LEX_USER > &user_list, Access_bitmask rights, bool revoke, bool write_to_binlog)
Store routine level grants in the privilege tables.
Definition: sql_authorization.cc:2910
void notify_flush_event(THD *thd)
Audit notification for flush.
Definition: sql_auth_cache.cc:1691
bool is_secure_transport(int vio_type)
Definition: sql_authentication.cc:4262
bool disconnect_on_expired_password
Definition: sql_authentication.cc:1119
bool wildcard_db_grant_exists()
mysql_tables_priv_table_field
Definition: auth_common.h:327
@ MYSQL_TABLES_PRIV_FIELD_HOST
Definition: auth_common.h:328
@ MYSQL_TABLES_PRIV_FIELD_GRANTOR
Definition: auth_common.h:332
@ MYSQL_TABLES_PRIV_FIELD_COUNT
Definition: auth_common.h:336
@ MYSQL_TABLES_PRIV_FIELD_COLUMN_PRIV
Definition: auth_common.h:335
@ MYSQL_TABLES_PRIV_FIELD_TABLE_NAME
Definition: auth_common.h:331
@ MYSQL_TABLES_PRIV_FIELD_TABLE_PRIV
Definition: auth_common.h:334
@ MYSQL_TABLES_PRIV_FIELD_TIMESTAMP
Definition: auth_common.h:333
@ MYSQL_TABLES_PRIV_FIELD_USER
Definition: auth_common.h:330
@ MYSQL_TABLES_PRIV_FIELD_DB
Definition: auth_common.h:329
void shutdown_acl_cache()
Shutdown the global Acl_cache system which was only initialized if the rwlocks were initialized.
Definition: sql_auth_cache.cc:3618
void log_user(THD *thd, String *str, LEX_USER *user, bool comma)
Auxiliary function for constructing a user list string.
Definition: sql_user.cc:123
bool check_grant_routine(THD *thd, Access_bitmask want_access, Table_ref *procs, bool is_proc, bool no_error)
Definition: sql_authorization.cc:4315
bool sp_revoke_privileges(THD *thd, const char *sp_db, const char *sp_name, bool is_proc)
Revoke privileges for all users on a stored procedure.
Definition: sql_authorization.cc:5298
mysql_proxies_priv_table_feild
Definition: auth_common.h:293
@ MYSQL_PROXIES_PRIV_FIELD_HOST
Definition: auth_common.h:294
@ MYSQL_PROXIES_PRIV_FIELD_PROXIED_USER
Definition: auth_common.h:297
@ MYSQL_PROXIES_PRIV_FIELD_PROXIED_HOST
Definition: auth_common.h:296
@ MYSQL_PROXIES_PRIV_FIELD_COUNT
Definition: auth_common.h:301
@ MYSQL_PROXIES_PRIV_FIELD_WITH_GRANT
Definition: auth_common.h:298
@ MYSQL_PROXIES_PRIV_FIELD_USER
Definition: auth_common.h:295
@ MYSQL_PROXIES_PRIV_FIELD_GRANTOR
Definition: auth_common.h:299
@ MYSQL_PROXIES_PRIV_FIELD_TIMESTAMP
Definition: auth_common.h:300
void err_readonly(THD *thd)
Generates appropriate error messages for read-only state depending on whether user has SUPER privileg...
Definition: sql_authorization.cc:1859
void grant_free(void)
Definition: sql_auth_cache.cc:2446
bool check_some_access(THD *thd, Access_bitmask want_access, Table_ref *table)
Check if the given table has any of the asked privileges.
Definition: sql_authorization.cc:2009
bool check_grant_db(THD *thd, const char *db, const bool check_table_grant=false)
Check if a user has the right to access a database.
Definition: sql_authorization.cc:4253
bool check_single_table_access(THD *thd, Access_bitmask privilege, Table_ref *tables, bool no_errors)
Check grants for commands which work only with one table.
Definition: sql_authorization.cc:1920
void generate_random_password(std::string *password, uint32_t)
Generates a random password of the length decided by the system variable generated_random_password_le...
Definition: sql_user.cc:954
bool decrypt_RSA_private_key(uchar *pkt, int cipher_length, unsigned char *plain_text, size_t plain_text_len, RSA *private_key)
Decrypt pkt data using RSA private key.
Definition: auth_common.cc:229
bool is_acl_inited()
Definition: sql_auth_cache.cc:4069
std::pair< std::string, std::string > get_authid_from_quoted_string(std::string str)
Return the unquoted authorization id as a user,host-tuple.
Definition: sql_authorization.cc:4592
ssl_artifacts_status
Definition: auth_common.h:906
@ SSL_ARTIFACTS_VIA_OPTIONS
Definition: auth_common.h:908
@ SSL_ARTIFACTS_AUTO_DETECTED
Definition: auth_common.h:910
@ SSL_ARTIFACT_TRACES_FOUND
Definition: auth_common.h:909
@ SSL_ARTIFACTS_NOT_FOUND
Definition: auth_common.h:907
Access_bitmask get_column_grant(THD *thd, GRANT_INFO *grant, const char *db_name, const char *table_name, const char *field_name)
Definition: sql_authorization.cc:4457
bool mysql_drop_user(THD *thd, List< LEX_USER > &list, bool if_exists, bool drop_role)
Drop a list of users and all their privileges.
Definition: sql_user.cc:3038
bool reload_acl_caches(THD *thd, bool mdl_locked, bool preserve_temporary_account_locking, Lock_state_list *modified_user_lock_state_list)
Reload all ACL caches.
Definition: sql_auth_cache.cc:3834
bool is_partial_revoke_exists(THD *thd)
Method to check if there exists at least one partial revokes in the cache.
Definition: sql_auth_cache.cc:4053
bool mysql_set_active_role(THD *thd, const List< LEX_USER > *role_list)
Definition: sql_authorization.cc:6758
bool mysql_alter_user(THD *thd, List< LEX_USER > &list, bool if_exists)
Definition: sql_user.cc:3406
int fill_schema_user_privileges(THD *thd, Table_ref *tables, Item *cond)
Definition: sql_authorization.cc:5609
bool mysql_grant(THD *thd, const char *db, List< LEX_USER > &list, Access_bitmask rights, bool revoke_grant, bool is_proxy, const List< LEX_CSTRING > &dynamic_privilege, bool grant_all_current_privileges, LEX_GRANT_AS *grant_as)
Definition: sql_authorization.cc:3427
mysql_user_table_field
Definition: auth_common.h:238
@ MYSQL_USER_FIELD_CREATE_TABLESPACE_PRIV
Definition: auth_common.h:269
@ MYSQL_USER_FIELD_SUPER_PRIV
Definition: auth_common.h:256
@ MYSQL_USER_FIELD_DROP_PRIV
Definition: auth_common.h:246
@ MYSQL_USER_FIELD_ACCOUNT_LOCKED
Definition: auth_common.h:283
@ MYSQL_USER_FIELD_SSL_TYPE
Definition: auth_common.h:270
@ MYSQL_USER_FIELD_SSL_CIPHER
Definition: auth_common.h:271
@ MYSQL_USER_FIELD_REPL_CLIENT_PRIV
Definition: auth_common.h:261
@ MYSQL_USER_FIELD_MAX_USER_CONNECTIONS
Definition: auth_common.h:277
@ MYSQL_USER_FIELD_COUNT
Definition: auth_common.h:290
@ MYSQL_USER_FIELD_PROCESS_PRIV
Definition: auth_common.h:249
@ MYSQL_USER_FIELD_SELECT_PRIV
Definition: auth_common.h:241
@ MYSQL_USER_FIELD_USER
Definition: auth_common.h:240
@ MYSQL_USER_FIELD_MAX_CONNECTIONS
Definition: auth_common.h:276
@ MYSQL_USER_FIELD_REFERENCES_PRIV
Definition: auth_common.h:252
@ MYSQL_USER_FIELD_PASSWORD_EXPIRED
Definition: auth_common.h:280
@ MYSQL_USER_FIELD_CREATE_ROUTINE_PRIV
Definition: auth_common.h:264
@ MYSQL_USER_FIELD_ALTER_ROUTINE_PRIV
Definition: auth_common.h:265
@ MYSQL_USER_FIELD_PLUGIN
Definition: auth_common.h:278
@ MYSQL_USER_FIELD_MAX_UPDATES
Definition: auth_common.h:275
@ MYSQL_USER_FIELD_EVENT_PRIV
Definition: auth_common.h:267
@ MYSQL_USER_FIELD_RELOAD_PRIV
Definition: auth_common.h:247
@ MYSQL_USER_FIELD_UPDATE_PRIV
Definition: auth_common.h:243
@ MYSQL_USER_FIELD_TRIGGER_PRIV
Definition: auth_common.h:268
@ MYSQL_USER_FIELD_X509_ISSUER
Definition: auth_common.h:272
@ MYSQL_USER_FIELD_LOCK_TABLES_PRIV
Definition: auth_common.h:258
@ MYSQL_USER_FIELD_CREATE_ROLE_PRIV
Definition: auth_common.h:284
@ MYSQL_USER_FIELD_PASSWORD_LAST_CHANGED
Definition: auth_common.h:281
@ MYSQL_USER_FIELD_INSERT_PRIV
Definition: auth_common.h:242
@ MYSQL_USER_FIELD_REPL_SLAVE_PRIV
Definition: auth_common.h:260
@ MYSQL_USER_FIELD_FILE_PRIV
Definition: auth_common.h:250
@ MYSQL_USER_FIELD_DROP_ROLE_PRIV
Definition: auth_common.h:285
@ MYSQL_USER_FIELD_INDEX_PRIV
Definition: auth_common.h:253
@ MYSQL_USER_FIELD_HOST
Definition: auth_common.h:239
@ MYSQL_USER_FIELD_PASSWORD_LIFETIME
Definition: auth_common.h:282
@ MYSQL_USER_FIELD_X509_SUBJECT
Definition: auth_common.h:273
@ MYSQL_USER_FIELD_AUTHENTICATION_STRING
Definition: auth_common.h:279
@ MYSQL_USER_FIELD_SHOW_DB_PRIV
Definition: auth_common.h:255
@ MYSQL_USER_FIELD_SHOW_VIEW_PRIV
Definition: auth_common.h:263
@ MYSQL_USER_FIELD_CREATE_USER_PRIV
Definition: auth_common.h:266
@ MYSQL_USER_FIELD_EXECUTE_PRIV
Definition: auth_common.h:259
@ MYSQL_USER_FIELD_MAX_QUESTIONS
Definition: auth_common.h:274
@ MYSQL_USER_FIELD_CREATE_VIEW_PRIV
Definition: auth_common.h:262
@ MYSQL_USER_FIELD_SHUTDOWN_PRIV
Definition: auth_common.h:248
@ MYSQL_USER_FIELD_CREATE_PRIV
Definition: auth_common.h:245
@ MYSQL_USER_FIELD_ALTER_PRIV
Definition: auth_common.h:254
@ MYSQL_USER_FIELD_CREATE_TMP_TABLE_PRIV
Definition: auth_common.h:257
@ MYSQL_USER_FIELD_GRANT_PRIV
Definition: auth_common.h:251
@ MYSQL_USER_FIELD_PASSWORD_REQUIRE_CURRENT
Definition: auth_common.h:288
@ MYSQL_USER_FIELD_PASSWORD_REUSE_TIME
Definition: auth_common.h:287
@ MYSQL_USER_FIELD_USER_ATTRIBUTES
Definition: auth_common.h:289
@ MYSQL_USER_FIELD_DELETE_PRIV
Definition: auth_common.h:244
@ MYSQL_USER_FIELD_PASSWORD_REUSE_HISTORY
Definition: auth_common.h:286
bool hostname_requires_resolving(const char *hostname)
Check if the given host name needs to be resolved or not.
Definition: sql_auth_cache.cc:882
bool has_grant_role_privilege(THD *thd, const List< LEX_USER > *roles)
Definition: sql_authorization.cc:2510
bool mysql_set_role_default(THD *thd)
Activates all the default roles in the current security context.
Definition: sql_authorization.cc:6725
bool check_authorization_id_string(THD *thd, LEX_STRING &mandatory_roles)
Definition: sql_authorization.cc:7236
bool check_engine_type_for_acl_table(THD *thd, bool mdl_locked)
Definition: sql_auth_cache.cc:2010
bool check_access(THD *thd, Access_bitmask want_access, const char *db, Access_bitmask *save_priv, GRANT_INTERNAL_INFO *grant_internal_info, bool dont_check_global_grants, bool no_errors)
Compare requested privileges with the privileges acquired from the User- and Db-tables.
Definition: sql_authorization.cc:2119
bool has_partial_view_routine_access(THD *thd, const char *db, const char *routine_name, bool is_proc)
Check if user has partial access to view routine's properties (i.e.
Definition: sql_authorization.cc:2067
bool check_one_table_access(THD *thd, Access_bitmask privilege, Table_ref *tables)
Check grants for commands which work only with one table and all other tables belonging to subselects...
Definition: sql_authorization.cc:1880
std::vector< ACL_temporary_lock_state > Lock_state_list
Definition: auth_common.h:72
bool check_grant_column(THD *thd, GRANT_INFO *grant, const char *db_name, const char *table_name, const char *name, size_t length, Security_context *sctx, Access_bitmask want_privilege)
Definition: sql_authorization.cc:3946
static constexpr int USER_HOST_BUFF_SIZE
Length of string buffer, that is enough to contain username and hostname parts of the user identifier...
Definition: auth_common.h:1124
bool opt_auto_generate_certs
Definition: sql_authentication.cc:1135
bool drop_role(THD *thd, TABLE *edge_table, TABLE *defaults_table, const Auth_id_ref &authid_user)
Definition: sql_authorization.cc:609
Definition: sql_auth_cache.h:247
Per internal schema ACL access rules.
Definition: auth_common.h:147
virtual const ACL_internal_table_access * lookup(const char *name) const =0
Search for per table ACL access rules by table name.
virtual ACL_internal_access_result check(Access_bitmask want_access, Access_bitmask *save_priv, bool any_combination_will_do) const =0
Check access to an internal schema.
virtual ~ACL_internal_schema_access()=default
ACL_internal_schema_access()=default
A registry for per internal schema ACL.
Definition: auth_common.h:185
static const ACL_internal_schema_access * lookup(const char *name)
Search per internal schema ACL by name.
Definition: sql_auth_cache.cc:210
static void register_schema(const LEX_CSTRING &name, const ACL_internal_schema_access *access)
Add an internal schema to the registry.
Definition: sql_auth_cache.cc:195
Per internal table ACL access rules.
Definition: auth_common.h:109
virtual ACL_internal_access_result check(Access_bitmask want_access, Access_bitmask *save_priv, bool any_combination_will_do) const =0
Check access to an internal table.
virtual ~ACL_internal_table_access()=default
ACL_internal_table_access()=default
Enables preserving temporary account locking attributes during ACL DDL.
Definition: sql_auth_cache.h:863
Data describing the table being created by CREATE TABLE or altered by ALTER TABLE.
Definition: sql_alter.h:204
Storage container for default auth ids.
Definition: auth_common.h:1077
const std::string & host() const
Definition: auth_common.cc:125
std::string m_user
User part.
Definition: auth_common.h:1100
Auth_id & operator=(const Auth_id &)=default
void create_key()
Definition: auth_common.cc:57
const std::string & user() const
Definition: auth_common.cc:124
bool operator<(const Auth_id &id) const
Definition: auth_common.cc:101
std::string auth_str() const
Definition: auth_common.cc:116
std::string m_key
Key: Internal representation mainly to facilitate use of Auth_id class in standard container.
Definition: auth_common.h:1108
std::string m_host
Host part.
Definition: auth_common.h:1102
Definition: auth_common.h:943
bool operator()(Security_context *sctx, Operation op) override
Definition: auth_common.h:945
Definition: auth_common.h:1014
const THD * m_thd
Definition: auth_common.h:1021
bool create(Security_context *sctx)
Create a local authid without modifying any tables.
Definition: sql_authorization.cc:7350
Default_local_authid(const THD *thd)
Definition: sql_authorization.cc:7330
bool precheck(Security_context *sctx)
Check if the security context can be created as a local authid.
Definition: sql_authorization.cc:7339
Definition: auth_common.h:1041
Drop_temporary_dynamic_privileges(std::vector< std::string > privs)
Definition: auth_common.h:1043
void operator()(Security_context *sctx)
Definition: sql_authorization.cc:7376
std::vector< std::string > m_privs
Definition: auth_common.h:1048
Generic iterator over the fields of an arbitrary table reference.
Definition: table.h:4044
Definition: auth_common.h:955
bool operator()(Security_context *sctx, Operation op) override
Definition: auth_common.h:957
Grant the privilege temporarily to the in-memory global privileges map.
Definition: auth_common.h:1029
const std::vector< std::string > m_privs
Definition: auth_common.h:1038
Grant_temporary_dynamic_privileges(const THD *thd, std::vector< std::string > privs)
Definition: sql_authorization.cc:7354
bool grant_privileges(Security_context *sctx)
Grant dynamic privileges to an in-memory global authid.
Definition: sql_authorization.cc:7370
const THD * m_thd
Definition: auth_common.h:1037
bool precheck(Security_context *sctx)
Definition: sql_authorization.cc:7358
Definition: auth_common.h:1052
bool grant_privileges(Security_context *sctx)
Definition: sql_authorization.cc:7390
bool precheck(Security_context *sctx)
Definition: sql_authorization.cc:7385
Grant_temporary_static_privileges(const THD *thd, const Access_bitmask privs)
Definition: sql_authorization.cc:7381
const THD * m_thd
THD handle.
Definition: auth_common.h:1060
const Access_bitmask m_privs
Privileges.
Definition: auth_common.h:1063
Extension of ACL_internal_schema_access for Information Schema.
Definition: auth_common.h:195
~IS_internal_schema_access() override=default
IS_internal_schema_access()=default
const ACL_internal_table_access * lookup(const char *name) const override
Search for per table ACL access rules by table name.
Definition: sql_authorization.cc:1677
ACL_internal_access_result check(Access_bitmask want_access, Access_bitmask *save_priv, bool any_combination_will_do) const override
Check access to an internal schema.
Definition: sql_authorization.cc:1660
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:853
Definition: sql_lex.h:3636
Definition: sql_lex.h:3648
Definition: sql_list.h:434
Factory for creating any Security_context given a pre-constructed policy.
Definition: auth_common.h:972
Security_context_functor m_static_privileges
Definition: auth_common.h:1010
Security_context_functor m_privileges
Definition: auth_common.h:1009
Security_context_factory(THD *thd, std::string user, std::string host, Security_context_functor extend_user_profile, Security_context_functor priv, Security_context_functor static_priv, std::function< void(Security_context *)> drop_policy)
Default Security_context factory implementation.
Definition: auth_common.h:987
std::string m_user
Definition: auth_common.h:1006
Sctx_ptr< Security_context > create()
Definition: sql_authorization.cc:7426
std::string m_host
Definition: auth_common.h:1007
bool apply_pre_constructed_policies(Security_context *sctx)
Definition: sql_authorization.cc:7396
Security_context_functor m_user_profile
Definition: auth_common.h:1008
THD * m_thd
Definition: auth_common.h:1005
const std::function< void(Security_context *)> m_drop_policy
Definition: auth_common.h:1011
A set of THD members describing the current authenticated user.
Definition: sql_security_ctx.h:55
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:168
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:34
Definition: table.h:2791
Definition: auth_common.h:441
uint repl_client_priv_idx() override
Definition: auth_common.h:482
uint max_user_connections_idx() override
Definition: auth_common.h:512
uint plugin_idx() override
Definition: auth_common.h:515
uint create_tablespace_priv_idx() override
Definition: auth_common.h:500
uint account_locked_idx() override
Definition: auth_common.h:528
uint create_priv_idx() override
Definition: auth_common.h:454
uint create_tmp_table_priv_idx() override
Definition: auth_common.h:472
uint password_idx() override
Definition: auth_common.h:446
uint trigger_priv_idx() override
Definition: auth_common.h:499
uint max_questions_idx() override
Definition: auth_common.h:507
uint create_view_priv_idx() override
Definition: auth_common.h:485
uint index_priv_idx() override
Definition: auth_common.h:464
uint insert_priv_idx() override
Definition: auth_common.h:451
uint user_idx() override
Definition: auth_common.h:444
uint alter_routine_priv_idx() override
Definition: auth_common.h:492
uint create_user_priv_idx() override
Definition: auth_common.h:495
uint password_reuse_time_idx() override
Definition: auth_common.h:532
uint password_expired_idx() override
Definition: auth_common.h:519
uint password_require_current_idx() override
Definition: auth_common.h:535
uint shutdown_priv_idx() override
Definition: auth_common.h:457
uint drop_priv_idx() override
Definition: auth_common.h:455
uint host_idx() override
Definition: auth_common.h:443
uint file_priv_idx() override
Definition: auth_common.h:459
uint authentication_string_idx() override
Definition: auth_common.h:516
uint drop_role_priv_idx() override
Definition: auth_common.h:471
uint repl_slave_priv_idx() override
Definition: auth_common.h:479
uint x509_subject_idx() override
Definition: auth_common.h:506
uint references_priv_idx() override
Definition: auth_common.h:461
uint password_lifetime_idx() override
Definition: auth_common.h:525
uint event_priv_idx() override
Definition: auth_common.h:498
uint process_priv_idx() override
Definition: auth_common.h:458
uint max_connections_idx() override
Definition: auth_common.h:509
uint password_reuse_history_idx() override
Definition: auth_common.h:529
uint create_routine_priv_idx() override
Definition: auth_common.h:489
uint ssl_cipher_idx() override
Definition: auth_common.h:504
uint super_priv_idx() override
Definition: auth_common.h:467
uint update_priv_idx() override
Definition: auth_common.h:452
uint reload_priv_idx() override
Definition: auth_common.h:456
uint create_role_priv_idx() override
Definition: auth_common.h:468
uint password_last_changed_idx() override
Definition: auth_common.h:522
uint lock_tables_priv_idx() override
Definition: auth_common.h:475
uint show_db_priv_idx() override
Definition: auth_common.h:466
uint user_attributes_idx() override
Definition: auth_common.h:538
uint x509_issuer_idx() override
Definition: auth_common.h:505
uint grant_priv_idx() override
Definition: auth_common.h:460
uint ssl_type_idx() override
Definition: auth_common.h:503
uint alter_priv_idx() override
Definition: auth_common.h:465
uint max_updates_idx() override
Definition: auth_common.h:508
uint execute_priv_idx() override
Definition: auth_common.h:478
uint select_priv_idx() override
Definition: auth_common.h:450
uint show_view_priv_idx() override
Definition: auth_common.h:488
uint delete_priv_idx() override
Definition: auth_common.h:453
Definition: auth_common.h:546
uint file_priv_idx() override
Definition: auth_common.h:609
uint user_idx() override
Definition: auth_common.h:596
uint insert_priv_idx() override
Definition: auth_common.h:599
uint shutdown_priv_idx() override
Definition: auth_common.h:605
uint account_locked_idx() override
Definition: auth_common.h:678
uint x509_issuer_idx() override
Definition: auth_common.h:653
uint password_reuse_time_idx() override
Definition: auth_common.h:684
uint host_idx() override
Definition: auth_common.h:595
uint x509_subject_idx() override
Definition: auth_common.h:654
uint index_priv_idx() override
Definition: auth_common.h:614
mysql_user_table_field_56
Definition: auth_common.h:548
@ MYSQL_USER_FIELD_SUPER_PRIV_56
Definition: auth_common.h:567
@ MYSQL_USER_FIELD_SELECT_PRIV_56
Definition: auth_common.h:552
@ MYSQL_USER_FIELD_REFERENCES_PRIV_56
Definition: auth_common.h:563
@ MYSQL_USER_FIELD_SHOW_DB_PRIV_56
Definition: auth_common.h:566
@ MYSQL_USER_FIELD_UPDATE_PRIV_56
Definition: auth_common.h:554
@ MYSQL_USER_FIELD_DROP_PRIV_56
Definition: auth_common.h:557
@ MYSQL_USER_FIELD_PLUGIN_56
Definition: auth_common.h:589
@ MYSQL_USER_FIELD_FILE_PRIV_56
Definition: auth_common.h:561
@ MYSQL_USER_FIELD_X509_SUBJECT_56
Definition: auth_common.h:584
@ MYSQL_USER_FIELD_REPL_CLIENT_PRIV_56
Definition: auth_common.h:572
@ MYSQL_USER_FIELD_PASSWORD_56
Definition: auth_common.h:551
@ MYSQL_USER_FIELD_MAX_USER_CONNECTIONS_56
Definition: auth_common.h:588
@ MYSQL_USER_FIELD_X509_ISSUER_56
Definition: auth_common.h:583
@ MYSQL_USER_FIELD_PROCESS_PRIV_56
Definition: auth_common.h:560
@ MYSQL_USER_FIELD_ALTER_ROUTINE_PRIV_56
Definition: auth_common.h:576
@ MYSQL_USER_FIELD_COUNT_56
Definition: auth_common.h:592
@ MYSQL_USER_FIELD_EVENT_PRIV_56
Definition: auth_common.h:578
@ MYSQL_USER_FIELD_SHUTDOWN_PRIV_56
Definition: auth_common.h:559
@ MYSQL_USER_FIELD_SSL_TYPE_56
Definition: auth_common.h:581
@ MYSQL_USER_FIELD_SSL_CIPHER_56
Definition: auth_common.h:582
@ MYSQL_USER_FIELD_CREATE_VIEW_PRIV_56
Definition: auth_common.h:573
@ MYSQL_USER_FIELD_DELETE_PRIV_56
Definition: auth_common.h:555
@ MYSQL_USER_FIELD_MAX_CONNECTIONS_56
Definition: auth_common.h:587
@ MYSQL_USER_FIELD_CREATE_USER_PRIV_56
Definition: auth_common.h:577
@ MYSQL_USER_FIELD_CREATE_ROUTINE_PRIV_56
Definition: auth_common.h:575
@ MYSQL_USER_FIELD_CREATE_PRIV_56
Definition: auth_common.h:556
@ MYSQL_USER_FIELD_EXECUTE_PRIV_56
Definition: auth_common.h:570
@ MYSQL_USER_FIELD_MAX_QUESTIONS_56
Definition: auth_common.h:585
@ MYSQL_USER_FIELD_HOST_56
Definition: auth_common.h:549
@ MYSQL_USER_FIELD_GRANT_PRIV_56
Definition: auth_common.h:562
@ MYSQL_USER_FIELD_AUTHENTICATION_STRING_56
Definition: auth_common.h:590
@ MYSQL_USER_FIELD_RELOAD_PRIV_56
Definition: auth_common.h:558
@ MYSQL_USER_FIELD_SHOW_VIEW_PRIV_56
Definition: auth_common.h:574
@ MYSQL_USER_FIELD_LOCK_TABLES_PRIV_56
Definition: auth_common.h:569
@ MYSQL_USER_FIELD_TRIGGER_PRIV_56
Definition: auth_common.h:579
@ MYSQL_USER_FIELD_PASSWORD_EXPIRED_56
Definition: auth_common.h:591
@ MYSQL_USER_FIELD_CREATE_TMP_TABLE_PRIV_56
Definition: auth_common.h:568
@ MYSQL_USER_FIELD_CREATE_TABLESPACE_PRIV_56
Definition: auth_common.h:580
@ MYSQL_USER_FIELD_USER_56
Definition: auth_common.h:550
@ MYSQL_USER_FIELD_INSERT_PRIV_56
Definition: auth_common.h:553
@ MYSQL_USER_FIELD_INDEX_PRIV_56
Definition: auth_common.h:564
@ MYSQL_USER_FIELD_ALTER_PRIV_56
Definition: auth_common.h:565
@ MYSQL_USER_FIELD_REPL_SLAVE_PRIV_56
Definition: auth_common.h:571
@ MYSQL_USER_FIELD_MAX_UPDATES_56
Definition: auth_common.h:586
uint drop_role_priv_idx() override
Definition: auth_common.h:680
uint user_attributes_idx() override
Definition: auth_common.h:688
uint lock_tables_priv_idx() override
Definition: auth_common.h:621
uint create_tmp_table_priv_idx() override
Definition: auth_common.h:618
uint password_lifetime_idx() override
Definition: auth_common.h:677
uint process_priv_idx() override
Definition: auth_common.h:608
uint create_view_priv_idx() override
Definition: auth_common.h:631
uint plugin_idx() override
Definition: auth_common.h:665
uint max_user_connections_idx() override
Definition: auth_common.h:662
uint select_priv_idx() override
Definition: auth_common.h:598
uint references_priv_idx() override
Definition: auth_common.h:611
uint grant_priv_idx() override
Definition: auth_common.h:610
uint repl_slave_priv_idx() override
Definition: auth_common.h:625
uint max_updates_idx() override
Definition: auth_common.h:658
uint delete_priv_idx() override
Definition: auth_common.h:601
uint create_user_priv_idx() override
Definition: auth_common.h:643
uint repl_client_priv_idx() override
Definition: auth_common.h:628
uint show_view_priv_idx() override
Definition: auth_common.h:634
uint password_reuse_history_idx() override
Definition: auth_common.h:681
uint update_priv_idx() override
Definition: auth_common.h:600
uint create_priv_idx() override
Definition: auth_common.h:602
uint max_questions_idx() override
Definition: auth_common.h:655
uint drop_priv_idx() override
Definition: auth_common.h:603
uint alter_priv_idx() override
Definition: auth_common.h:615
uint execute_priv_idx() override
Definition: auth_common.h:624
uint password_idx() override
Definition: auth_common.h:597
uint password_expired_idx() override
Definition: auth_common.h:669
uint password_last_changed_idx() override
Definition: auth_common.h:674
uint authentication_string_idx() override
Definition: auth_common.h:666
uint show_db_priv_idx() override
Definition: auth_common.h:616
uint create_tablespace_priv_idx() override
Definition: auth_common.h:648
uint password_require_current_idx() override
Definition: auth_common.h:685
uint ssl_type_idx() override
Definition: auth_common.h:651
uint max_connections_idx() override
Definition: auth_common.h:659
uint reload_priv_idx() override
Definition: auth_common.h:604
uint create_role_priv_idx() override
Definition: auth_common.h:679
uint alter_routine_priv_idx() override
Definition: auth_common.h:640
uint create_routine_priv_idx() override
Definition: auth_common.h:637
uint super_priv_idx() override
Definition: auth_common.h:617
uint ssl_cipher_idx() override
Definition: auth_common.h:652
uint trigger_priv_idx() override
Definition: auth_common.h:647
uint event_priv_idx() override
Definition: auth_common.h:646
Definition: auth_common.h:691
virtual ~User_table_schema_factory()=default
virtual User_table_schema * get_user_table_schema(TABLE *table)
Definition: auth_common.h:693
virtual bool is_old_user_table_schema(TABLE *table)
Definition: auth_common.cc:48
Definition: auth_common.h:378
virtual uint user_attributes_idx()=0
virtual uint event_priv_idx()=0
virtual uint update_priv_idx()=0
virtual uint max_connections_idx()=0
virtual uint user_idx()=0
virtual uint select_priv_idx()=0
virtual uint repl_client_priv_idx()=0
virtual uint x509_issuer_idx()=0
virtual uint references_priv_idx()=0
virtual uint alter_priv_idx()=0
virtual uint password_last_changed_idx()=0
virtual uint host_idx()=0
virtual uint trigger_priv_idx()=0
virtual uint show_view_priv_idx()=0
virtual uint process_priv_idx()=0
virtual uint create_tablespace_priv_idx()=0
virtual uint reload_priv_idx()=0
virtual uint drop_priv_idx()=0
virtual uint password_expired_idx()=0
virtual uint max_user_connections_idx()=0
virtual uint max_updates_idx()=0
virtual uint password_reuse_time_idx()=0
virtual uint create_view_priv_idx()=0
virtual uint create_tmp_table_priv_idx()=0
virtual uint ssl_type_idx()=0
virtual uint password_lifetime_idx()=0
virtual uint show_db_priv_idx()=0
virtual uint password_reuse_history_idx()=0
virtual uint create_role_priv_idx()=0
virtual uint create_priv_idx()=0
virtual uint account_locked_idx()=0
virtual uint x509_subject_idx()=0
virtual uint alter_routine_priv_idx()=0
virtual uint super_priv_idx()=0
virtual uint password_require_current_idx()=0
virtual uint repl_slave_priv_idx()=0
virtual uint shutdown_priv_idx()=0
virtual uint lock_tables_priv_idx()=0
virtual uint authentication_string_idx()=0
virtual uint drop_role_priv_idx()=0
virtual uint ssl_cipher_idx()=0
virtual uint create_user_priv_idx()=0
virtual uint password_idx()=0
virtual uint grant_priv_idx()=0
virtual uint plugin_idx()=0
virtual uint index_priv_idx()=0
virtual uint max_questions_idx()=0
virtual uint create_routine_priv_idx()=0
virtual uint execute_priv_idx()=0
virtual uint delete_priv_idx()=0
virtual uint file_priv_idx()=0
virtual uint insert_priv_idx()=0
virtual ~User_table_schema()=default
Definition: sp_head.h:120
PFS_table * create_table(PFS_table_share *share, PFS_thread *opening_thread, const void *identity)
Create instrumentation for a table instance.
Definition: pfs_instr.cc:1296
enum_server_command
A list of all MySQL protocol commands.
Definition: my_command.h:48
Common definition used by mysys, performance schema and server & client.
static constexpr int HOSTNAME_LENGTH
Definition: my_hostname.h:43
Some integer typedefs for easier portability.
unsigned char uchar
Definition: my_inttypes.h:52
uint32_t uint32
Definition: my_inttypes.h:67
Common definition between mysql server & client.
#define USERNAME_LENGTH
Definition: mysql_com.h:69
static char * password
Definition: mysql_secure_installation.cc:56
char * user
Definition: mysqladmin.cc:60
const char * host
Definition: mysqladmin.cc:59
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1057
Definition: acl_table_user.cc:80
const std::string mysql
const std::string system_user
const std::string connection_admin
Definition: commit_order_queue.h:34
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
static mysql_service_status_t create(const char *service_names[], reference_caching_channel *out_channel) noexcept
Definition: component.cc:36
const char * table_name
Definition: rules_table_service.cc:56
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192
const char * db_name
Definition: rules_table_service.cc:55
Definition: gcs_xcom_synode.h:64
std::conditional_t< !std::is_array< T >::value, std::unique_ptr< T, detail::Deleter< T > >, std::conditional_t< detail::is_unbounded_array_v< T >, std::unique_ptr< T, detail::Array_deleter< std::remove_extent_t< T > > >, void > > unique_ptr
The following is a common type that is returned by all the ut::make_unique (non-aligned) specializati...
Definition: ut0new.h:2439
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2879
role_enum
Definition: sql_admin.h:225
struct rsa_st RSA
Definition: sql_authentication.h:103
LEX_CSTRING * plugin_name(st_plugin_int **ref)
Definition: sql_plugin_ref.h:95
Consumer_type
Target types where the rewritten query will be added.
Definition: sql_rewrite.h:38
case opt name
Definition: sslopt-case.h:33
Definition: m_ctype.h:385
The current state of the privilege checking process for the current user, SQL statement and SQL objec...
Definition: table.h:358
State information for internal tables grants.
Definition: table.h:335
Struct to hold information about the table that should be created.
Definition: handler.h:3045
Definition: table.h:2658
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:83
Definition: mysql_lex_string.h:40
Definition: mysql_lex_string.h:35
Definition: auth_common.h:930
virtual bool operator()(Security_context *, Operation)=0
Security_context_policy(const Security_context_policy &)=default
Operation
Definition: auth_common.h:931
@ Precheck
Definition: auth_common.h:931
@ Execute
Definition: auth_common.h:931
Security_context_policy()=default
virtual ~Security_context_policy()=default
Definition: table.h:1399
Definition: auth_common.h:1127
std::string host
Definition: auth_common.h:1129
std::string user
Definition: auth_common.h:1128
unsigned int authentication_factor
Definition: auth_common.h:1131
std::string password
Definition: auth_common.h:1130
Definition: sql_connect.h:70
unsigned int uint
Definition: uca9-dump.cc:75
command
Definition: version_token.cc:280
enum enum_vio_type vio_type(const MYSQL_VIO vio)