23#ifndef SQL_USER_CACHE_INCLUDED
24#define SQL_USER_CACHE_INCLUDED
29#include <boost/graph/adjacency_list.hpp>
30#include <boost/graph/graph_selectors.hpp>
31#include <boost/graph/graph_traits.hpp>
32#include <boost/graph/properties.hpp>
33#include <boost/pending/property.hpp>
37#include <unordered_map>
66template <
typename Element_type,
size_t Prealloc>
121 static bool calc_ip_mask(
const char *ip_arg,
long *val);
133 static const char *
calc_ip(
const char *ip_arg,
long *val);
220#define NUM_CREDENTIALS 2
221#define PRIMARY_CRED (NUM_CREDENTIALS - NUM_CREDENTIALS)
222#define SECOND_CRED (PRIMARY_CRED + 1)
318 bool update(
THD *thd,
bool successful_login,
long *ret_days_remaining);
373 void init(
const char *host_arg,
const char *user_arg,
374 const char *proxied_host_arg,
const char *proxied_user_arg,
375 bool with_grant_arg);
378 const char *proxied_host_arg,
const char *proxied_user_arg,
379 bool with_grant_arg);
392 bool matches(
const char *host_arg,
const char *user_arg,
const char *ip_arg,
393 const char *proxied_user_arg,
bool any_proxy_user);
396 return (a == b || (a !=
nullptr && b !=
nullptr && !strcmp(a, b)));
401 bool granted_on(
const char *host_arg,
const char *user_arg) {
403 ((!
user && (!user_arg || !user_arg[0])) ||
404 (
user && user_arg && !strcmp(
user, user_arg))) &&
423 const char *grantor);
455 GRANT_NAME(
const char *h,
const char *d,
const char *u,
const char *t,
461 const char *t,
bool is_routine);
471 GRANT_TABLE(
const char *h,
const char *d,
const char *u,
const char *t,
534 const char *
host,
const char *ip,
const char *db,
const char *
user,
535 const char *tname,
bool exact,
bool name_tolower) {
538 std::string
name = tname;
547 auto it_range = name_hash.equal_range(
key);
548 for (
auto it = it_range.first; it != it_range.second; ++it) {
549 T *grant_name = it->second.get();
551 if (!grant_name->host.get_host() ||
553 grant_name->host.get_host())) ||
554 (ip && !strcmp(ip, grant_name->host.get_host())))
557 if (grant_name->host.compare_hostname(
host, ip) &&
558 (!found || found->sort < grant_name->sort))
566 const char *db,
const char *
user,
567 const char *tname,
bool proc,
570 db,
user, tname, exact,
true);
574 const char *db,
const char *
user,
575 const char *tname,
bool exact) {
600 boost::property<boost::vertex_name_t, std::string>>
606typedef boost::adjacency_list<boost::setS,
608 boost::bidirectionalS,
614typedef boost::graph_traits<Granted_roles_graph>::vertex_descriptor
618typedef boost::graph_traits<Granted_roles_graph>::edge_descriptor
626using degree_s_t = boost::graph_traits<Granted_roles_graph>::degree_size_type;
630 boost::graph_traits<Granted_roles_graph>::out_edge_iterator;
634 boost::graph_traits<Granted_roles_graph>::in_edge_iterator;
648 void *
operator new(
size_t size);
649 void operator delete(
void *
p);
774 bool lock(
bool raise_error =
true);
uint32_t Access_bitmask
Definition: auth_acls.h:34
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:80
std::vector< Auth_id_ref > List_of_auth_id_refs
Definition: auth_common.h:81
std::map< std::string, Access_bitmask > SP_access_map
Definition: auth_internal.h:65
std::map< std::string, Access_bitmask > Db_access_map
Definition: auth_internal.h:66
std::map< std::string, bool > Dynamic_privileges
Definition: auth_internal.h:277
std::unordered_set< std::string > Grant_acl_set
Definition: auth_internal.h:90
Definition: sql_auth_cache.h:159
Access_bitmask access
Definition: sql_auth_cache.h:164
ACL_HOST_AND_IP host
Definition: sql_auth_cache.h:162
ACL_ACCESS()
Definition: sql_auth_cache.h:161
ulong sort
Definition: sql_auth_cache.h:163
Definition: sql_auth_cache.h:346
char * user
Definition: sql_auth_cache.h:348
char * db
Definition: sql_auth_cache.h:348
void set_user(MEM_ROOT *mem, const char *user_arg)
Definition: sql_auth_cache.cc:679
void set_host(MEM_ROOT *mem, const char *host_arg)
Definition: sql_auth_cache.cc:683
Definition: sql_auth_cache.h:73
bool check_allow_all_hosts()
Definition: sql_auth_cache.h:150
bool has_wildcard()
Definition: sql_auth_cache.h:145
static bool calc_cidr_mask(const char *ip_arg, long *val)
IP mask parsing in the CIDR format.
Definition: sql_auth_cache.cc:224
long ip_mask
Definition: sql_auth_cache.h:95
size_t get_host_len() const
Definition: sql_auth_cache.h:143
enum_ip_mask_type
IP mask type enum.
Definition: sql_auth_cache.h:78
@ ip_mask_type_cidr
IP specified with a mask in a CIDR form.
Definition: sql_auth_cache.h:86
@ ip_mask_type_subnet
IP specified with a mask in a form of a subnet.
Definition: sql_auth_cache.h:90
@ ip_mask_type_implicit
Only IP is specified.
Definition: sql_auth_cache.h:82
static const char * calc_ip(const char *ip_arg, long *val)
IP parsing.
Definition: sql_auth_cache.cc:247
long ip
Definition: sql_auth_cache.h:95
static bool calc_ip_mask(const char *ip_arg, long *val)
IP mask parsing in the subnet format.
Definition: sql_auth_cache.cc:235
size_t hostname_length
Definition: sql_auth_cache.h:94
void update_hostname(const char *host_arg)
Update the hostname.
Definition: sql_auth_cache.cc:268
ACL_HOST_AND_IP()
Definition: sql_auth_cache.h:136
const char * get_host() const
Definition: sql_auth_cache.h:142
enum_ip_mask_type ip_mask_type
IP mask type.
Definition: sql_auth_cache.h:99
const char * hostname
Definition: sql_auth_cache.h:93
bool compare_hostname(const char *host_arg, const char *ip_arg)
Definition: sql_auth_cache.cc:320
Definition: sql_auth_cache.h:215
char * db
Definition: sql_auth_cache.h:217
Definition: sql_auth_cache.h:354
ACL_HOST_AND_IP proxied_host
Definition: sql_auth_cache.h:356
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:653
bool get_with_grant()
Definition: sql_auth_cache.h:383
const char * get_proxied_host()
Definition: sql_auth_cache.h:386
void print_grant(THD *thd, String *str)
Definition: sql_auth_cache.cc:606
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:557
const char * get_user()
Definition: sql_auth_cache.h:384
void set_host(MEM_ROOT *mem, const char *host_arg)
Definition: sql_auth_cache.cc:675
size_t get_proxied_user_length() const
Definition: sql_auth_cache.h:427
size_t get_user_length() const
Definition: sql_auth_cache.h:425
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:508
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:617
bool pk_equals(ACL_PROXY_USER *grant)
Definition: sql_auth_cache.cc:583
bool check_validity(bool check_no_resolve)
Definition: sql_auth_cache.cc:544
static bool auth_element_equals(const char *a, const char *b)
Definition: sql_auth_cache.h:395
void set_user(MEM_ROOT *mem, const char *user_arg)
Definition: sql_auth_cache.cc:671
static int store_with_grant(TABLE *table, bool with_grant)
Definition: sql_auth_cache.cc:643
void set_data(ACL_PROXY_USER *grant)
Definition: sql_auth_cache.h:411
old_acl_proxy_users
Definition: sql_auth_cache.h:360
@ MYSQL_PROXIES_PRIV_PROXIED_HOST
Definition: sql_auth_cache.h:363
@ MYSQL_PROXIES_PRIV_HOST
Definition: sql_auth_cache.h:361
@ MYSQL_PROXIES_PRIV_WITH_GRANT
Definition: sql_auth_cache.h:365
@ MYSQL_PROXIES_PRIV_GRANTOR
Definition: sql_auth_cache.h:366
@ MYSQL_PROXIES_PRIV_PROXIED_USER
Definition: sql_auth_cache.h:364
@ MYSQL_PROXIES_PRIV_TIMESTAMP
Definition: sql_auth_cache.h:367
@ MYSQL_PROXIES_PRIV_USER
Definition: sql_auth_cache.h:362
const char * proxied_user
Definition: sql_auth_cache.h:357
const char * get_proxied_user()
Definition: sql_auth_cache.h:385
const char * user
Definition: sql_auth_cache.h:355
bool granted_on(const char *host_arg, const char *user_arg)
Definition: sql_auth_cache.h:401
bool with_grant
Definition: sql_auth_cache.h:358
Definition: sql_auth_cache.h:307
Password_locked_state()
Definition: sql_auth_cache.h:319
void set_parameters(uint password_lock_time_days, uint failed_login_attempts)
Definition: sql_auth_cache.cc:372
int m_password_lock_time_days
read from the user config.
Definition: sql_auth_cache.h:329
uint get_failed_login_attempts() const
Definition: sql_auth_cache.h:315
bool is_active() const
Definition: sql_auth_cache.h:309
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:339
long m_daynr_locked
The day the account is locked, 0 if not locked.
Definition: sql_auth_cache.h:341
uint m_failed_login_attempts
read from the user config.
Definition: sql_auth_cache.h:334
int get_password_lock_time_days() const
Definition: sql_auth_cache.h:312
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:390
Class that compares ACL_USER objects.
Definition: sql_auth_cache.h:194
bool operator()(const ACL_USER &a, const ACL_USER &b)
Determine sort order of two user accounts.
Definition: sql_auth_cache.cc:3757
Definition: sql_auth_cache.h:246
bool account_locked
Specifies whether the user account is locked or unlocked.
Definition: sql_auth_cache.h:261
Acl_credential credentials[NUM_CREDENTIALS]
Additional credentials.
Definition: sql_auth_cache.h:298
void set_mfa(MEM_ROOT *mem, I_multi_factor_auth *m)
Definition: sql_auth_cache.cc:490
MYSQL_TIME password_last_changed
Definition: sql_auth_cache.h:255
bool use_default_password_reuse_interval
Ignore password_reuse_interval, use the global default global_password_reuse_interval.
Definition: sql_auth_cache.h:288
uint password_lifetime
Definition: sql_auth_cache.h:256
Lex_acl_attrib_udyn password_require_current
The current password needed to be specified while changing it.
Definition: sql_auth_cache.h:293
bool can_authenticate
Definition: sql_auth_cache.h:254
bool is_role
If this ACL_USER was used as a role id then this flag is true.
Definition: sql_auth_cache.h:267
void set_host(MEM_ROOT *mem, const char *host_arg)
Definition: sql_auth_cache.cc:486
LEX_CSTRING plugin
Definition: sql_auth_cache.h:252
bool use_default_password_history
Ignore password_history_length, use the global default global_password_history.
Definition: sql_auth_cache.h:278
ACL_USER()
Definition: sql_auth_cache.cc:334
enum SSL_type ssl_type
Definition: sql_auth_cache.h:250
const char * x509_subject
Definition: sql_auth_cache.h:251
const char * ssl_cipher
Definition: sql_auth_cache.h:251
size_t get_username_length() const
Definition: sql_auth_cache.h:306
uint32 password_reuse_interval
The number of days that would have to pass before a password can be reused.
Definition: sql_auth_cache.h:283
I_multi_factor_auth * m_mfa
Definition: sql_auth_cache.h:343
bool password_expired
Definition: sql_auth_cache.h:253
USER_RESOURCES user_resource
Definition: sql_auth_cache.h:248
void set_user(MEM_ROOT *mem, const char *user_arg)
Definition: sql_auth_cache.cc:482
class ACL_USER::Password_locked_state password_locked_state
char * user
Definition: sql_auth_cache.h:249
const char * x509_issuer
Definition: sql_auth_cache.h:251
bool use_default_password_lifetime
Definition: sql_auth_cache.h:257
uint32 password_history_length
The number of old passwords to check when setting a new password.
Definition: sql_auth_cache.h:272
ACL_USER * copy(MEM_ROOT *root)
Definition: sql_auth_cache.cc:448
Class that compares ACL_ACCESS objects.
Definition: sql_auth_cache.h:172
bool operator()(const ACL_ACCESS &a, const ACL_ACCESS &b)
Determine sort order of two user accounts.
Definition: sql_auth_cache.cc:3727
Definition: sql_auth_cache.h:487
Acl_cache_allocator(const Acl_cache_allocator< U > &other)
Definition: sql_auth_cache.h:496
Acl_cache_allocator & operator=(const Acl_cache_allocator< U > &other)
Definition: sql_auth_cache.h:500
Acl_cache_allocator()
Definition: sql_auth_cache.h:489
Lock guard for ACL Cache.
Definition: sql_auth_cache.h:763
Acl_cache_lock_guard(THD *thd, Acl_cache_lock_mode mode)
Acl_cache_lock_guard constructor.
Definition: sql_auth_cache.cc:3519
Acl_cache_lock_mode m_mode
Lock mode.
Definition: sql_auth_cache.h:784
bool lock(bool raise_error=true)
Explicitly take lock on Acl_cache_lock_cache object.
Definition: sql_auth_cache.cc:3535
void unlock()
Explicitly unlock all acquired locks.
Definition: sql_auth_cache.cc:3565
~Acl_cache_lock_guard()
Acl_cache_lock_guard destructor.
Definition: sql_auth_cache.h:772
bool already_locked()
Check whether lock is already obtained or not.
Definition: sql_auth_cache.cc:3597
bool m_locked
Lock status.
Definition: sql_auth_cache.h:786
THD * m_thd
Handle to THD object.
Definition: sql_auth_cache.h:782
Definition: sql_auth_cache.h:682
int32 size()
Return a snapshot of the number of items in the cache.
Definition: sql_auth_cache.cc:3319
void increase_version()
When ever the role graph is modified we must flatten the privileges again.
Definition: sql_auth_cache.cc:3311
uint64 version()
Return a lower boundary to the current version count.
Definition: sql_auth_cache.cc:3317
~Acl_cache()
Definition: sql_auth_cache.cc:3233
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:3420
mysql_mutex_t m_cache_flush_mutex
Definition: sql_auth_cache.h:747
void flush_cache()
Removes all acl map objects with a references count of zero.
Definition: sql_auth_cache.cc:3399
std::atomic< uint64 > m_role_graph_version
Role graph version counter.
Definition: sql_auth_cache.h:745
Acl_cache_internal m_cache
Definition: sql_auth_cache.h:746
Acl_cache()
Definition: sql_auth_cache.cc:3220
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:3321
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:3370
Definition: sql_auth_cache.h:224
uint8 m_salt[SCRAMBLE_LENGTH+1]
The salt variable is used as the password hash for native_password_authetication.
Definition: sql_auth_cache.h:238
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:243
LEX_CSTRING m_auth_string
Definition: sql_auth_cache.h:233
Acl_credential()
Definition: sql_auth_cache.h:226
Container for global, schema, table/view and routine ACL maps.
Definition: sql_auth_cache.h:637
Grant_acl_set * grant_acls()
Definition: sql_auth_cache.cc:3295
void increase_reference_count()
Definition: sql_auth_cache.cc:3307
std::atomic< int32 > m_reference_count
Definition: sql_auth_cache.h:667
Dynamic_privileges * dynamic_privileges()
Definition: sql_auth_cache.cc:3301
Restrictions & restrictions()
Definition: sql_auth_cache.cc:3305
Acl_map(Security_context *sctx, uint64 ver)
Definition: sql_auth_cache.cc:3238
Acl_map & operator=(const Acl_map &map)
Definition: sql_auth_cache.cc:3285
void decrease_reference_count()
Definition: sql_auth_cache.cc:3309
Acl_map(const Acl_map &map)=delete
~Acl_map()
Definition: sql_auth_cache.cc:3265
Db_access_map * db_acls()
Definition: sql_auth_cache.cc:3289
SP_access_map m_sp_acls
Definition: sql_auth_cache.h:673
Table_access_map m_table_acls
Definition: sql_auth_cache.h:671
Access_bitmask m_global_acl
Definition: sql_auth_cache.h:672
uint32 reference_count()
Definition: sql_auth_cache.h:664
Db_access_map * db_wild_acls()
Definition: sql_auth_cache.cc:3291
Access_bitmask global_acl()
Definition: sql_auth_cache.cc:3287
Db_access_map m_db_acls
Definition: sql_auth_cache.h:669
uint64 m_version
Definition: sql_auth_cache.h:668
Db_access_map m_db_wild_acls
Definition: sql_auth_cache.h:670
Table_access_map * table_acls()
Definition: sql_auth_cache.cc:3293
SP_access_map * sp_acls()
Definition: sql_auth_cache.cc:3297
Dynamic_privileges m_dynamic_privileges
Definition: sql_auth_cache.h:676
SP_access_map * func_acls()
Definition: sql_auth_cache.cc:3299
Restrictions m_restrictions
Definition: sql_auth_cache.h:677
SP_access_map m_func_acls
Definition: sql_auth_cache.h:674
Grant_acl_set m_with_admin_acls
Definition: sql_auth_cache.h:675
uint64 version()
Definition: sql_auth_cache.h:663
Cache to store the Restrictions of every auth_id.
Definition: sql_auth_cache.h:799
Acl_restrictions(Acl_restrictions &&)=delete
malloc_unordered_map< std::string, Restrictions > m_restrictions_map
Definition: sql_auth_cache.h:816
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:3814
Restrictions find_restrictions(const ACL_USER *acl_user) const
Find the Restrictions of the ACL_USER.
Definition: sql_auth_cache.cc:3841
size_t size() const
Definition: sql_auth_cache.cc:3855
void remove_restrictions(const ACL_USER *acl_user)
Remove the Restrictions of the ACL_USER.
Definition: sql_auth_cache.cc:3794
Acl_restrictions & operator=(const Acl_restrictions &)=delete
Acl_restrictions()
Construstor.
Definition: sql_auth_cache.cc:3787
Definition: sql_auth_cache.h:439
Access_bitmask rights
Definition: sql_auth_cache.h:441
GRANT_COLUMN(String &c, Access_bitmask y)
Definition: sql_auth_cache.cc:913
std::string column
Definition: sql_auth_cache.h:442
Definition: sql_auth_cache.h:446
void set_user_details(const char *h, const char *d, const char *u, const char *t, bool is_routine)
Definition: sql_auth_cache.cc:916
std::string hash_key
Definition: sql_auth_cache.h:454
char * tname
Definition: sql_auth_cache.h:451
const char * user
Definition: sql_auth_cache.h:450
Access_bitmask privs
Definition: sql_auth_cache.h:452
ACL_HOST_AND_IP host
Definition: sql_auth_cache.h:448
char * db
Definition: sql_auth_cache.h:449
virtual ~GRANT_NAME()=default
ulong sort
Definition: sql_auth_cache.h:453
GRANT_NAME(const char *h, const char *d, const char *u, const char *t, Access_bitmask p, bool is_routine)
Definition: sql_auth_cache.cc:940
virtual bool ok()
Definition: sql_auth_cache.h:459
Definition: sql_auth_cache.h:464
collation_unordered_multimap< std::string, unique_ptr_destroy_only< GRANT_COLUMN > > hash_columns
Definition: sql_auth_cache.h:469
GRANT_TABLE(const char *h, const char *d, const char *u, const char *t, Access_bitmask p, Access_bitmask c)
Definition: sql_auth_cache.cc:946
bool init(TABLE *col_privs)
Definition: sql_auth_cache.cc:1004
bool ok() override
Definition: sql_auth_cache.h:476
Access_bitmask cols
Definition: sql_auth_cache.h:466
An interface to access information about Multi factor authentication methods.
Definition: sql_mfa.h:45
Malloc_allocator is a C++ STL memory allocator based on my_malloc/my_free.
Definition: malloc_allocator.h:63
A typesafe replacement for DYNAMIC_ARRAY.
Definition: prealloced_array.h:71
Container of all restrictions for a given user.
Definition: partial_revokes.h:155
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: auth_internal.h:68
Definition: sql_auth_cache.h:432
uint16 length
Definition: sql_auth_cache.h:435
char key[1]
Definition: sql_auth_cache.h:436
Access_bitmask access
Definition: sql_auth_cache.h:434
std::unordered_map, but with my_malloc and collation-aware comparison.
Definition: map_helpers.h:210
std::unordered_multimap, but with my_malloc and collation-aware comparison.
Definition: map_helpers.h:226
std::unordered_map, but with my_malloc, so that you can track the memory used using PSI memory keys.
Definition: map_helpers.h:148
std::unordered_multimap, but with my_malloc, so that you can track the memory used using PSI memory k...
Definition: map_helpers.h:189
const char * p
Definition: ctype-mb.cc:1237
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:222
A better implementation of the UNIX ctype(3) library.
MYSQL_PLUGIN_IMPORT CHARSET_INFO * system_charset_info
Definition: mysqld.cc:1545
#define my_strcasecmp(s, a, b)
Definition: m_ctype.h:718
#define my_casedn_str(s, a)
Definition: m_ctype.h:770
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:54
const char wild_many
Character constant for wildcard representing zero or more characters (SQL style).
Definition: mf_wcomp.h:43
const char wild_one
Character constant for wildcard representing any one character (SQL style).
Definition: mf_wcomp.h:37
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:489
Header for compiler-dependent features.
Some integer typedefs for easier portability.
uint8_t uint8
Definition: my_inttypes.h:63
int32_t int32
Definition: my_inttypes.h:66
uint64_t uint64
Definition: my_inttypes.h:69
uint16_t uint16
Definition: my_inttypes.h:65
uint32_t uint32
Definition: my_inttypes.h:67
#define UINT_MAX32
Definition: my_inttypes.h:79
Functions related to handling of plugins and other dynamically loaded libraries.
#define MYSQL_PLUGIN_IMPORT
Definition: my_sharedlib.h:71
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:128
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:60
const char * host
Definition: mysqladmin.cc:59
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1052
Tag dispatch for custom Role_properties.
Definition: sql_auth_cache.h:588
BOOST_INSTALL_PROPERTY(vertex, acl_user)
vertex_acl_user_t
Definition: sql_auth_cache.h:589
@ vertex_acl_user
Definition: sql_auth_cache.h:589
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:76
mode
Definition: file_handle.h:60
std::map< Key, Value, Compare, ut::allocator< std::pair< const Key, Value > > > map
Specialization of map which uses ut_allocator.
Definition: ut0new.h:2892
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:2438
PSI_memory_key key_memory_acl_cache
Definition: psi_memory_key.cc:96
required string key
Definition: replication_asynchronous_connection_failover.proto:60
Lex_acl_attrib_udyn
This is generic enum.
Definition: table.h:2544
uint grant_version
Definition: sql_auth_cache.cc:163
std::unique_ptr< malloc_unordered_multimap< std::string, unique_ptr_destroy_only< GRANT_TABLE > > > column_priv_hash
Definition: sql_auth_cache.cc:140
Prealloced_array< ACL_DB, ACL_PREALLOC_SIZE > * acl_dbs
Definition: sql_auth_cache.cc:132
std::unique_ptr< malloc_unordered_multimap< std::string, unique_ptr_destroy_only< GRANT_NAME > > > proc_priv_hash
Definition: sql_auth_cache.cc:143
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:1149
Acl_cache_allocator< ACL_USER * > Acl_user_ptr_allocator
Definition: sql_auth_cache.h:503
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:611
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:531
Acl_cache_lock_mode
Enum for specifying lock type over Acl cache.
Definition: sql_auth_cache.h:756
MYSQL_PLUGIN_IMPORT CHARSET_INFO * files_charset_info
Definition: mysqld.cc:1545
MEM_ROOT global_acl_memory
Definition: sql_auth_cache.cc:128
Prealloced_array< ACL_USER, ACL_PREALLOC_SIZE > * acl_users
Definition: sql_auth_cache.cc:130
bool allow_all_hosts
Definition: sql_auth_cache.cc:162
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:601
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:634
Acl_cache * get_global_acl_cache()
Definition: sql_auth_cache.cc:106
std::unique_ptr< malloc_unordered_multimap< std::string, unique_ptr_destroy_only< GRANT_NAME > > > func_priv_hash
Definition: sql_auth_cache.h:521
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:630
std::unique_ptr< Acl_restrictions > acl_restrictions
Definition: sql_auth_cache.cc:147
Prealloced_array< ACL_HOST_AND_IP, ACL_PREALLOC_SIZE > * acl_wild_hosts
Definition: sql_auth_cache.cc:133
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:1099
#define NUM_CREDENTIALS
Definition: sql_auth_cache.h:220
boost::property< boost::edge_capacity_t, int > Role_edge_properties
Definition: sql_auth_cache.h:603
MEM_ROOT memex
Definition: sql_auth_cache.cc:129
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:615
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:619
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:573
std::list< ACL_USER *, Acl_user_ptr_allocator > Acl_user_ptr_list
Definition: sql_auth_cache.h:504
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:622
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:626
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:565
collation_unordered_map< std::string, ACL_USER * > * acl_check_hosts
Definition: sql_auth_cache.cc:146
const size_t ACL_PREALLOC_SIZE
Definition: sql_auth_cache.h:511
Prealloced_array< ACL_PROXY_USER, ACL_PREALLOC_SIZE > * acl_proxy_users
Definition: sql_auth_cache.cc:131
GRANT_COLUMN * column_hash_search(GRANT_TABLE *t, const char *cname, size_t length)
Definition: sql_auth_cache.h:580
LF_HASH Acl_cache_internal
Definition: sql_auth_cache.h:680
static MEM_ROOT mem
Definition: sql_servers.cc:99
case opt name
Definition: sslopt-case.h:33
Definition: sql_auth_cache.h:491
Acl_cache_allocator< U > other
Definition: sql_auth_cache.h:492
Definition: m_ctype.h:385
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_time.h:82
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:50
Definition: sql_connect.h:41
unsigned int uint
Definition: uca9-dump.cc:75
SSL_type
Definition: violite.h:305