22#ifndef SQL_USER_CACHE_INCLUDED
23#define SQL_USER_CACHE_INCLUDED
28#include <boost/graph/adjacency_list.hpp>
29#include <boost/graph/graph_selectors.hpp>
30#include <boost/graph/graph_traits.hpp>
31#include <boost/graph/properties.hpp>
32#include <boost/pending/property.hpp>
36#include <unordered_map>
65template <
typename Element_type,
size_t Prealloc>
120 static bool calc_ip_mask(
const char *ip_arg,
long *val);
132 static const char *
calc_ip(
const char *ip_arg,
long *val);
219#define NUM_CREDENTIALS 2
220#define PRIMARY_CRED (NUM_CREDENTIALS - NUM_CREDENTIALS)
221#define SECOND_CRED (PRIMARY_CRED + 1)
317 bool update(
THD *thd,
bool successful_login,
long *ret_days_remaining);
372 void init(
const char *host_arg,
const char *user_arg,
373 const char *proxied_host_arg,
const char *proxied_user_arg,
374 bool with_grant_arg);
377 const char *proxied_host_arg,
const char *proxied_user_arg,
378 bool with_grant_arg);
391 bool matches(
const char *host_arg,
const char *user_arg,
const char *ip_arg,
392 const char *proxied_user_arg,
bool any_proxy_user);
395 return (a == b || (a !=
nullptr && b !=
nullptr && !strcmp(a, b)));
400 bool granted_on(
const char *host_arg,
const char *user_arg) {
402 ((!
user && (!user_arg || !user_arg[0])) ||
403 (
user && user_arg && !strcmp(
user, user_arg))) &&
422 const char *grantor);
454 GRANT_NAME(
const char *h,
const char *d,
const char *u,
const char *t,
455 ulong
p,
bool is_routine);
460 const char *t,
bool is_routine);
470 GRANT_TABLE(
const char *h,
const char *d,
const char *u,
const char *t,
533 const char *
host,
const char *ip,
const char *db,
const char *
user,
534 const char *tname,
bool exact,
bool name_tolower) {
537 std::string
name = tname;
546 auto it_range = name_hash.equal_range(
key);
547 for (
auto it = it_range.first; it != it_range.second; ++it) {
548 T *grant_name = it->second.get();
550 if (!grant_name->host.get_host() ||
552 grant_name->host.get_host())) ||
553 (ip && !strcmp(ip, grant_name->host.get_host())))
556 if (grant_name->host.compare_hostname(
host, ip) &&
557 (!found || found->sort < grant_name->sort))
565 const char *db,
const char *
user,
566 const char *tname,
bool proc,
569 db,
user, tname, exact,
true);
573 const char *db,
const char *
user,
574 const char *tname,
bool exact) {
599 boost::property<boost::vertex_name_t, std::string>>
605typedef boost::adjacency_list<boost::setS,
607 boost::bidirectionalS,
613typedef boost::graph_traits<Granted_roles_graph>::vertex_descriptor
617typedef boost::graph_traits<Granted_roles_graph>::edge_descriptor
625using degree_s_t = boost::graph_traits<Granted_roles_graph>::degree_size_type;
629 boost::graph_traits<Granted_roles_graph>::out_edge_iterator;
633 boost::graph_traits<Granted_roles_graph>::in_edge_iterator;
647 void *
operator new(
size_t size);
648 void operator delete(
void *
p);
773 bool lock(
bool raise_error =
true);
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:78
std::vector< Auth_id_ref > List_of_auth_id_refs
Definition: auth_common.h:79
std::map< std::string, bool > Dynamic_privileges
Definition: auth_internal.h:275
std::unordered_set< std::string > Grant_acl_set
Definition: auth_internal.h:89
std::map< std::string, unsigned long > SP_access_map
Definition: auth_internal.h:64
std::map< std::string, unsigned long > Db_access_map
Definition: auth_internal.h:65
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:250
Definition: sql_auth_cache.h:158
ulong access
Definition: sql_auth_cache.h:163
ACL_HOST_AND_IP host
Definition: sql_auth_cache.h:161
ACL_ACCESS()
Definition: sql_auth_cache.h:160
ulong sort
Definition: sql_auth_cache.h:162
Definition: sql_auth_cache.h:345
char * user
Definition: sql_auth_cache.h:347
char * db
Definition: sql_auth_cache.h:347
void set_user(MEM_ROOT *mem, const char *user_arg)
Definition: sql_auth_cache.cc:680
void set_host(MEM_ROOT *mem, const char *host_arg)
Definition: sql_auth_cache.cc:684
Definition: sql_auth_cache.h:72
bool check_allow_all_hosts()
Definition: sql_auth_cache.h:149
bool has_wildcard()
Definition: sql_auth_cache.h:144
static bool calc_cidr_mask(const char *ip_arg, long *val)
IP mask parsing in the CIDR format.
Definition: sql_auth_cache.cc:225
long ip_mask
Definition: sql_auth_cache.h:94
size_t get_host_len() const
Definition: sql_auth_cache.h:142
enum_ip_mask_type
IP mask type enum.
Definition: sql_auth_cache.h:77
@ ip_mask_type_cidr
IP specified with a mask in a CIDR form.
Definition: sql_auth_cache.h:85
@ ip_mask_type_subnet
IP specified with a mask in a form of a subnet.
Definition: sql_auth_cache.h:89
@ ip_mask_type_implicit
Only IP is specified.
Definition: sql_auth_cache.h:81
static const char * calc_ip(const char *ip_arg, long *val)
IP parsing.
Definition: sql_auth_cache.cc:248
long ip
Definition: sql_auth_cache.h:94
static bool calc_ip_mask(const char *ip_arg, long *val)
IP mask parsing in the subnet format.
Definition: sql_auth_cache.cc:236
size_t hostname_length
Definition: sql_auth_cache.h:93
void update_hostname(const char *host_arg)
Update the hostname.
Definition: sql_auth_cache.cc:269
ACL_HOST_AND_IP()
Definition: sql_auth_cache.h:135
const char * get_host() const
Definition: sql_auth_cache.h:141
enum_ip_mask_type ip_mask_type
IP mask type.
Definition: sql_auth_cache.h:98
const char * hostname
Definition: sql_auth_cache.h:92
bool compare_hostname(const char *host_arg, const char *ip_arg)
Definition: sql_auth_cache.cc:321
Definition: sql_auth_cache.h:214
char * db
Definition: sql_auth_cache.h:216
Definition: sql_auth_cache.h:353
ACL_HOST_AND_IP proxied_host
Definition: sql_auth_cache.h:355
static int store_data_record(TABLE *table, const LEX_CSTRING &host, const LEX_CSTRING &user, const LEX_CSTRING &proxied_host, const LEX_CSTRING &proxied_user, bool with_grant, const char *grantor)
Definition: sql_auth_cache.cc:654
bool get_with_grant()
Definition: sql_auth_cache.h:382
const char * get_proxied_host()
Definition: sql_auth_cache.h:385
void print_grant(THD *thd, String *str)
Definition: sql_auth_cache.cc:607
bool matches(const char *host_arg, const char *user_arg, const char *ip_arg, const char *proxied_user_arg, bool any_proxy_user)
Definition: sql_auth_cache.cc:558
const char * get_user()
Definition: sql_auth_cache.h:383
void set_host(MEM_ROOT *mem, const char *host_arg)
Definition: sql_auth_cache.cc:676
size_t get_proxied_user_length() const
Definition: sql_auth_cache.h:426
size_t get_user_length() const
Definition: sql_auth_cache.h:424
void init(const char *host_arg, const char *user_arg, const char *proxied_host_arg, const char *proxied_user_arg, bool with_grant_arg)
Definition: sql_auth_cache.cc:509
static int store_pk(TABLE *table, const LEX_CSTRING &host, const LEX_CSTRING &user, const LEX_CSTRING &proxied_host, const LEX_CSTRING &proxied_user)
Definition: sql_auth_cache.cc:618
bool pk_equals(ACL_PROXY_USER *grant)
Definition: sql_auth_cache.cc:584
bool check_validity(bool check_no_resolve)
Definition: sql_auth_cache.cc:545
static bool auth_element_equals(const char *a, const char *b)
Definition: sql_auth_cache.h:394
void set_user(MEM_ROOT *mem, const char *user_arg)
Definition: sql_auth_cache.cc:672
static int store_with_grant(TABLE *table, bool with_grant)
Definition: sql_auth_cache.cc:644
void set_data(ACL_PROXY_USER *grant)
Definition: sql_auth_cache.h:410
old_acl_proxy_users
Definition: sql_auth_cache.h:359
@ MYSQL_PROXIES_PRIV_PROXIED_HOST
Definition: sql_auth_cache.h:362
@ MYSQL_PROXIES_PRIV_HOST
Definition: sql_auth_cache.h:360
@ MYSQL_PROXIES_PRIV_WITH_GRANT
Definition: sql_auth_cache.h:364
@ MYSQL_PROXIES_PRIV_GRANTOR
Definition: sql_auth_cache.h:365
@ MYSQL_PROXIES_PRIV_PROXIED_USER
Definition: sql_auth_cache.h:363
@ MYSQL_PROXIES_PRIV_TIMESTAMP
Definition: sql_auth_cache.h:366
@ MYSQL_PROXIES_PRIV_USER
Definition: sql_auth_cache.h:361
const char * proxied_user
Definition: sql_auth_cache.h:356
const char * get_proxied_user()
Definition: sql_auth_cache.h:384
const char * user
Definition: sql_auth_cache.h:354
bool granted_on(const char *host_arg, const char *user_arg)
Definition: sql_auth_cache.h:400
bool with_grant
Definition: sql_auth_cache.h:357
Definition: sql_auth_cache.h:306
Password_locked_state()
Definition: sql_auth_cache.h:318
void set_parameters(uint password_lock_time_days, uint failed_login_attempts)
Definition: sql_auth_cache.cc:373
int m_password_lock_time_days
read from the user config.
Definition: sql_auth_cache.h:328
uint get_failed_login_attempts() const
Definition: sql_auth_cache.h:314
bool is_active() const
Definition: sql_auth_cache.h:308
uint m_remaining_login_attempts
The remaining login tries, valid only if m_failed_login_attempts and m_password_lock_time_days are no...
Definition: sql_auth_cache.h:338
long m_daynr_locked
The day the account is locked, 0 if not locked.
Definition: sql_auth_cache.h:340
uint m_failed_login_attempts
read from the user config.
Definition: sql_auth_cache.h:333
int get_password_lock_time_days() const
Definition: sql_auth_cache.h:311
bool update(THD *thd, bool successful_login, long *ret_days_remaining)
Updates the password locked state based on the time of day fetched from the THD.
Definition: sql_auth_cache.cc:391
Class that compares ACL_USER objects.
Definition: sql_auth_cache.h:193
bool operator()(const ACL_USER &a, const ACL_USER &b)
Determine sort order of two user accounts.
Definition: sql_auth_cache.cc:3765
Definition: sql_auth_cache.h:245
bool account_locked
Specifies whether the user account is locked or unlocked.
Definition: sql_auth_cache.h:260
Acl_credential credentials[NUM_CREDENTIALS]
Additional credentials.
Definition: sql_auth_cache.h:297
void set_mfa(MEM_ROOT *mem, I_multi_factor_auth *m)
Definition: sql_auth_cache.cc:491
MYSQL_TIME password_last_changed
Definition: sql_auth_cache.h:254
bool use_default_password_reuse_interval
Ignore password_reuse_interval, use the global default global_password_reuse_interval.
Definition: sql_auth_cache.h:287
uint password_lifetime
Definition: sql_auth_cache.h:255
Lex_acl_attrib_udyn password_require_current
The current password needed to be specified while changing it.
Definition: sql_auth_cache.h:292
bool can_authenticate
Definition: sql_auth_cache.h:253
bool is_role
If this ACL_USER was used as a role id then this flag is true.
Definition: sql_auth_cache.h:266
void set_host(MEM_ROOT *mem, const char *host_arg)
Definition: sql_auth_cache.cc:487
LEX_CSTRING plugin
Definition: sql_auth_cache.h:251
bool use_default_password_history
Ignore password_history_length, use the global default global_password_history.
Definition: sql_auth_cache.h:277
ACL_USER()
Definition: sql_auth_cache.cc:335
enum SSL_type ssl_type
Definition: sql_auth_cache.h:249
const char * x509_subject
Definition: sql_auth_cache.h:250
const char * ssl_cipher
Definition: sql_auth_cache.h:250
size_t get_username_length() const
Definition: sql_auth_cache.h:305
uint32 password_reuse_interval
The number of days that would have to pass before a password can be reused.
Definition: sql_auth_cache.h:282
I_multi_factor_auth * m_mfa
Definition: sql_auth_cache.h:342
bool password_expired
Definition: sql_auth_cache.h:252
USER_RESOURCES user_resource
Definition: sql_auth_cache.h:247
void set_user(MEM_ROOT *mem, const char *user_arg)
Definition: sql_auth_cache.cc:483
class ACL_USER::Password_locked_state password_locked_state
char * user
Definition: sql_auth_cache.h:248
const char * x509_issuer
Definition: sql_auth_cache.h:250
bool use_default_password_lifetime
Definition: sql_auth_cache.h:256
uint32 password_history_length
The number of old passwords to check when setting a new password.
Definition: sql_auth_cache.h:271
ACL_USER * copy(MEM_ROOT *root)
Definition: sql_auth_cache.cc:449
Class that compares ACL_ACCESS objects.
Definition: sql_auth_cache.h:171
bool operator()(const ACL_ACCESS &a, const ACL_ACCESS &b)
Determine sort order of two user accounts.
Definition: sql_auth_cache.cc:3735
Definition: sql_auth_cache.h:486
Acl_cache_allocator(const Acl_cache_allocator< U > &other)
Definition: sql_auth_cache.h:495
Acl_cache_allocator & operator=(const Acl_cache_allocator< U > &other)
Definition: sql_auth_cache.h:499
Acl_cache_allocator()
Definition: sql_auth_cache.h:488
Lock guard for ACL Cache.
Definition: sql_auth_cache.h:762
Acl_cache_lock_guard(THD *thd, Acl_cache_lock_mode mode)
Acl_cache_lock_guard constructor.
Definition: sql_auth_cache.cc:3527
Acl_cache_lock_mode m_mode
Lock mode.
Definition: sql_auth_cache.h:783
bool lock(bool raise_error=true)
Explicitly take lock on Acl_cache_lock_cache object.
Definition: sql_auth_cache.cc:3543
void unlock()
Explicitly unlock all acquired locks.
Definition: sql_auth_cache.cc:3573
~Acl_cache_lock_guard()
Acl_cache_lock_guard destructor.
Definition: sql_auth_cache.h:771
bool already_locked()
Check whether lock is already obtained or not.
Definition: sql_auth_cache.cc:3605
bool m_locked
Lock status.
Definition: sql_auth_cache.h:785
THD * m_thd
Handle to THD object.
Definition: sql_auth_cache.h:781
Definition: sql_auth_cache.h:681
int32 size()
Return a snapshot of the number of items in the cache.
Definition: sql_auth_cache.cc:3327
void increase_version()
When ever the role graph is modified we must flatten the privileges again.
Definition: sql_auth_cache.cc:3319
uint64 version()
Return a lower boundary to the current version count.
Definition: sql_auth_cache.cc:3325
~Acl_cache()
Definition: sql_auth_cache.cc:3241
Acl_map * create_acl_map(uint64 version, Security_context *sctx)
Creates a new acl map for the authorization id of the security context.
Definition: sql_auth_cache.cc:3428
mysql_mutex_t m_cache_flush_mutex
Definition: sql_auth_cache.h:746
void flush_cache()
Removes all acl map objects with a references count of zero.
Definition: sql_auth_cache.cc:3407
std::atomic< uint64 > m_role_graph_version
Role graph version counter.
Definition: sql_auth_cache.h:744
Acl_cache_internal m_cache
Definition: sql_auth_cache.h:745
Acl_cache()
Definition: sql_auth_cache.cc:3228
Acl_map * checkout_acl_map(Security_context *sctx, Auth_id_ref &uid, List_of_auth_id_refs &active_roles)
Returns a pointer to an acl map to the caller and increase the reference count on the object,...
Definition: sql_auth_cache.cc:3329
void return_acl_map(Acl_map *map)
When the security context is done with the acl map it calls the cache to decrease the reference count...
Definition: sql_auth_cache.cc:3378
Definition: sql_auth_cache.h:223
uint8 m_salt[SCRAMBLE_LENGTH+1]
The salt variable is used as the password hash for native_password_authetication.
Definition: sql_auth_cache.h:237
uint8 m_salt_len
In the old protocol the salt_len indicated what type of autnetication protocol was used: 0 - no passw...
Definition: sql_auth_cache.h:242
LEX_CSTRING m_auth_string
Definition: sql_auth_cache.h:232
Acl_credential()
Definition: sql_auth_cache.h:225
Container for global, schema, table/view and routine ACL maps.
Definition: sql_auth_cache.h:636
Grant_acl_set * grant_acls()
Definition: sql_auth_cache.cc:3303
void increase_reference_count()
Definition: sql_auth_cache.cc:3315
std::atomic< int32 > m_reference_count
Definition: sql_auth_cache.h:666
Dynamic_privileges * dynamic_privileges()
Definition: sql_auth_cache.cc:3309
Restrictions & restrictions()
Definition: sql_auth_cache.cc:3313
ulong m_global_acl
Definition: sql_auth_cache.h:671
Acl_map(Security_context *sctx, uint64 ver)
Definition: sql_auth_cache.cc:3246
Acl_map & operator=(const Acl_map &map)
Definition: sql_auth_cache.cc:3293
void decrease_reference_count()
Definition: sql_auth_cache.cc:3317
Acl_map(const Acl_map &map)=delete
~Acl_map()
Definition: sql_auth_cache.cc:3273
ulong global_acl()
Definition: sql_auth_cache.cc:3295
Db_access_map * db_acls()
Definition: sql_auth_cache.cc:3297
SP_access_map m_sp_acls
Definition: sql_auth_cache.h:672
Table_access_map m_table_acls
Definition: sql_auth_cache.h:670
uint32 reference_count()
Definition: sql_auth_cache.h:663
Db_access_map * db_wild_acls()
Definition: sql_auth_cache.cc:3299
Db_access_map m_db_acls
Definition: sql_auth_cache.h:668
uint64 m_version
Definition: sql_auth_cache.h:667
Db_access_map m_db_wild_acls
Definition: sql_auth_cache.h:669
Table_access_map * table_acls()
Definition: sql_auth_cache.cc:3301
SP_access_map * sp_acls()
Definition: sql_auth_cache.cc:3305
Dynamic_privileges m_dynamic_privileges
Definition: sql_auth_cache.h:675
SP_access_map * func_acls()
Definition: sql_auth_cache.cc:3307
Restrictions m_restrictions
Definition: sql_auth_cache.h:676
SP_access_map m_func_acls
Definition: sql_auth_cache.h:673
Grant_acl_set m_with_admin_acls
Definition: sql_auth_cache.h:674
uint64 version()
Definition: sql_auth_cache.h:662
Cache to store the Restrictions of every auth_id.
Definition: sql_auth_cache.h:798
Acl_restrictions(Acl_restrictions &&)=delete
malloc_unordered_map< std::string, Restrictions > m_restrictions_map
Definition: sql_auth_cache.h:815
Acl_restrictions(const Acl_restrictions &)=delete
Acl_restrictions & operator=(Acl_restrictions &&)=delete
void upsert_restrictions(const ACL_USER *acl_user, const Restrictions &restriction)
Update, insert or remove the Restrictions for the ACL_USER.
Definition: sql_auth_cache.cc:3822
Restrictions find_restrictions(const ACL_USER *acl_user) const
Find the Restrictions of the ACL_USER.
Definition: sql_auth_cache.cc:3849
size_t size() const
Definition: sql_auth_cache.cc:3863
void remove_restrictions(const ACL_USER *acl_user)
Remove the Restrictions of the ACL_USER.
Definition: sql_auth_cache.cc:3802
Acl_restrictions & operator=(const Acl_restrictions &)=delete
Acl_restrictions()
Construstor.
Definition: sql_auth_cache.cc:3795
Definition: sql_auth_cache.h:438
ulong rights
Definition: sql_auth_cache.h:440
std::string column
Definition: sql_auth_cache.h:441
GRANT_COLUMN(String &c, ulong y)
Definition: sql_auth_cache.cc:914
Definition: sql_auth_cache.h:445
void set_user_details(const char *h, const char *d, const char *u, const char *t, bool is_routine)
Definition: sql_auth_cache.cc:917
std::string hash_key
Definition: sql_auth_cache.h:453
char * tname
Definition: sql_auth_cache.h:450
const char * user
Definition: sql_auth_cache.h:449
ACL_HOST_AND_IP host
Definition: sql_auth_cache.h:447
char * db
Definition: sql_auth_cache.h:448
virtual ~GRANT_NAME()=default
ulong sort
Definition: sql_auth_cache.h:452
GRANT_NAME(const char *h, const char *d, const char *u, const char *t, ulong p, bool is_routine)
Definition: sql_auth_cache.cc:941
ulong privs
Definition: sql_auth_cache.h:451
virtual bool ok()
Definition: sql_auth_cache.h:458
Definition: sql_auth_cache.h:463
collation_unordered_multimap< std::string, unique_ptr_destroy_only< GRANT_COLUMN > > hash_columns
Definition: sql_auth_cache.h:468
ulong cols
Definition: sql_auth_cache.h:465
GRANT_TABLE(const char *h, const char *d, const char *u, const char *t, ulong p, ulong c)
Definition: sql_auth_cache.cc:947
bool init(TABLE *col_privs)
Definition: sql_auth_cache.cc:1003
bool ok() override
Definition: sql_auth_cache.h:475
An interface to access information about Multi factor authentication methods.
Definition: sql_mfa.h:47
Malloc_allocator is a C++ STL memory allocator based on my_malloc/my_free.
Definition: malloc_allocator.h:62
A typesafe replacement for DYNAMIC_ARRAY.
Definition: prealloced_array.h:70
Container of all restrictions for a given user.
Definition: partial_revokes.h:117
A set of THD members describing the current authenticated user.
Definition: sql_security_ctx.h:52
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:166
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:35
Definition: auth_internal.h:67
Definition: sql_auth_cache.h:431
uint16 length
Definition: sql_auth_cache.h:434
char key[1]
Definition: sql_auth_cache.h:435
ulong access
Definition: sql_auth_cache.h:433
std::unordered_map, but with my_malloc and collation-aware comparison.
Definition: map_helpers.h:209
std::unordered_multimap, but with my_malloc and collation-aware comparison.
Definition: map_helpers.h:225
std::unordered_map, but with my_malloc, so that you can track the memory used using PSI memory keys.
Definition: map_helpers.h:147
std::unordered_multimap, but with my_malloc, so that you can track the memory used using PSI memory k...
Definition: map_helpers.h:188
const char * p
Definition: ctype-mb.cc:1234
A better implementation of the UNIX ctype(3) library.
int my_strcasecmp(const CHARSET_INFO *cs, const char *s1, const char *s2)
Definition: m_ctype.h:655
size_t my_casedn_str(const CHARSET_INFO *cs, char *str)
Definition: m_ctype.h:736
static auto find_or_nullptr(const Container &container, const Key &key)
Some useful helpers for associative arrays with MySQL-specific semantics.
Definition: map_helpers.h:53
MYSQL_PLUGIN_IMPORT CHARSET_INFO * system_charset_info
Definition: mysqld.cc:1558
const char wild_many
Character constant for wildcard representing zero or more characters (SQL style).
Definition: mf_wcomp.h:42
const char wild_one
Character constant for wildcard representing any one character (SQL style).
Definition: mf_wcomp.h:36
This file follows Google coding style, except for the name MEM_ROOT (which is kept for historical rea...
std::unique_ptr< T, Destroy_only< T > > unique_ptr_destroy_only
std::unique_ptr, but only destroying.
Definition: my_alloc.h:488
Header for compiler-dependent features.
Some integer typedefs for easier portability.
uint8_t uint8
Definition: my_inttypes.h:62
int32_t int32
Definition: my_inttypes.h:65
uint64_t uint64
Definition: my_inttypes.h:68
uint16_t uint16
Definition: my_inttypes.h:64
uint32_t uint32
Definition: my_inttypes.h:66
#define UINT_MAX32
Definition: my_inttypes.h:78
Functions related to handling of plugins and other dynamically loaded libraries.
#define MYSQL_PLUGIN_IMPORT
Definition: my_sharedlib.h:70
Common header for many mysys elements.
Common definition between mysql server & client.
#define SCRAMBLE_LENGTH
Length of random string sent by server on handshake; this is also length of obfuscated password,...
Definition: mysql_com.h:127
ABI for instrumented mutexes.
Time declarations shared between the server and client API: you should not add anything to this heade...
char * user
Definition: mysqladmin.cc:64
const char * host
Definition: mysqladmin.cc:63
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1085
static PFS_engine_table_share_proxy table
Definition: pfs.cc:60
Tag dispatch for custom Role_properties.
Definition: sql_auth_cache.h:587
BOOST_INSTALL_PROPERTY(vertex, acl_user)
vertex_acl_user_t
Definition: sql_auth_cache.h:588
@ vertex_acl_user
Definition: sql_auth_cache.h:588
const std::string password_lock_time_days("password_lock_time_days")
underkeys of password locking
const std::string failed_login_attempts("failed_login_attempts")
underkeys of password locking
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:75
mode
Definition: file_handle.h:59
std::map< Key, Value, Compare, ut::allocator< std::pair< const Key, Value > > > map
Specialization of map which uses ut_allocator.
Definition: ut0new.h:2891
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:2437
PSI_memory_key key_memory_acl_cache
Definition: psi_memory_key.cc:99
required string key
Definition: replication_asynchronous_connection_failover.proto:59
Lex_acl_attrib_udyn
This is generic enum.
Definition: table.h:2597
uint grant_version
Definition: sql_auth_cache.cc:164
std::unique_ptr< malloc_unordered_multimap< std::string, unique_ptr_destroy_only< GRANT_TABLE > > > column_priv_hash
Definition: sql_auth_cache.cc:141
Prealloced_array< ACL_DB, ACL_PREALLOC_SIZE > * acl_dbs
Definition: sql_auth_cache.cc:133
std::unique_ptr< malloc_unordered_multimap< std::string, unique_ptr_destroy_only< GRANT_NAME > > > proc_priv_hash
Definition: sql_auth_cache.cc:144
Acl_user_ptr_list * cached_acl_users_for_name(const char *name)
Fetch the list of ACL_USERs which share name or have no name.
Definition: sql_auth_cache.cc:1147
Acl_cache_allocator< ACL_USER * > Acl_user_ptr_allocator
Definition: sql_auth_cache.h:502
boost::adjacency_list< boost::setS, boost::vecS, boost::bidirectionalS, Role_properties, Role_edge_properties > Granted_roles_graph
A graph of all users/roles privilege inheritance.
Definition: sql_auth_cache.h:610
T * name_hash_search(const malloc_unordered_multimap< std::string, unique_ptr_destroy_only< T > > &name_hash, const char *host, const char *ip, const char *db, const char *user, const char *tname, bool exact, bool name_tolower)
Definition: sql_auth_cache.h:530
Acl_cache_lock_mode
Enum for specifying lock type over Acl cache.
Definition: sql_auth_cache.h:755
MYSQL_PLUGIN_IMPORT CHARSET_INFO * files_charset_info
Definition: mysqld.cc:1558
MEM_ROOT global_acl_memory
Definition: sql_auth_cache.cc:129
Prealloced_array< ACL_USER, ACL_PREALLOC_SIZE > * acl_users
Definition: sql_auth_cache.cc:131
bool allow_all_hosts
Definition: sql_auth_cache.cc:163
boost::property< boost::vertex_acl_user_t, ACL_USER, boost::property< boost::vertex_name_t, std::string > > Role_properties
Custom vertex properties used in Granted_roles_graph TODO ACL_USER contains too much information.
Definition: sql_auth_cache.h:600
boost::graph_traits< Granted_roles_graph >::in_edge_iterator in_edge_itr_t
The type for the iterator returned by in_edges().
Definition: sql_auth_cache.h:633
Acl_cache * get_global_acl_cache()
Definition: sql_auth_cache.cc:107
std::unique_ptr< malloc_unordered_multimap< std::string, unique_ptr_destroy_only< GRANT_NAME > > > func_priv_hash
Definition: sql_auth_cache.h:520
boost::graph_traits< Granted_roles_graph >::out_edge_iterator out_edge_itr_t
The type for the iterator returned by out_edges().
Definition: sql_auth_cache.h:629
std::unique_ptr< Acl_restrictions > acl_restrictions
Definition: sql_auth_cache.cc:148
Prealloced_array< ACL_HOST_AND_IP, ACL_PREALLOC_SIZE > * acl_wild_hosts
Definition: sql_auth_cache.cc:134
void rebuild_cached_acl_users_for_name(void)
Build the lists of ACL_USERs which share name or have no name.
Definition: sql_auth_cache.cc:1097
#define NUM_CREDENTIALS
Definition: sql_auth_cache.h:219
boost::property< boost::edge_capacity_t, int > Role_edge_properties
Definition: sql_auth_cache.h:602
MEM_ROOT memex
Definition: sql_auth_cache.cc:130
boost::graph_traits< Granted_roles_graph >::vertex_descriptor Role_vertex_descriptor
The data type of a vertex in the Granted_roles_graph.
Definition: sql_auth_cache.h:614
boost::graph_traits< Granted_roles_graph >::edge_descriptor Role_edge_descriptor
The data type of an edge in the Granted_roles_graph.
Definition: sql_auth_cache.h:618
GRANT_TABLE * table_hash_search(const char *host, const char *ip, const char *db, const char *user, const char *tname, bool exact)
Definition: sql_auth_cache.h:572
std::list< ACL_USER *, Acl_user_ptr_allocator > Acl_user_ptr_list
Definition: sql_auth_cache.h:503
std::unordered_map< std::string, Role_vertex_descriptor > Role_index_map
The datatype of the map between authids and graph vertex descriptors.
Definition: sql_auth_cache.h:621
boost::graph_traits< Granted_roles_graph >::degree_size_type degree_s_t
The type used for the number of edges incident to a vertex in the graph.
Definition: sql_auth_cache.h:625
GRANT_NAME * routine_hash_search(const char *host, const char *ip, const char *db, const char *user, const char *tname, bool proc, bool exact)
Definition: sql_auth_cache.h:564
collation_unordered_map< std::string, ACL_USER * > * acl_check_hosts
Definition: sql_auth_cache.cc:147
const size_t ACL_PREALLOC_SIZE
Definition: sql_auth_cache.h:510
Prealloced_array< ACL_PROXY_USER, ACL_PREALLOC_SIZE > * acl_proxy_users
Definition: sql_auth_cache.cc:132
GRANT_COLUMN * column_hash_search(GRANT_TABLE *t, const char *cname, size_t length)
Definition: sql_auth_cache.h:579
LF_HASH Acl_cache_internal
Definition: sql_auth_cache.h:679
static MEM_ROOT mem
Definition: sql_servers.cc:99
case opt name
Definition: sslopt-case.h:32
Definition: sql_auth_cache.h:490
Acl_cache_allocator< U > other
Definition: sql_auth_cache.h:491
Definition: m_ctype.h:422
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:82
Definition: mysql_lex_string.h:39
Definition: mysql_time.h:81
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:49
Definition: sql_connect.h:40
SSL_type
Definition: violite.h:306