#include <assert.h>
#include <string.h>
#include <sys/types.h>
#include <atomic>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_selectors.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/properties.hpp>
#include <boost/pending/property.hpp>
#include <list>
#include <memory>
#include <string>
#include <unordered_map>
#include "lex_string.h"
#include "lf.h"
#include "map_helpers.h"
#include "mf_wcomp.h"
#include "my_alloc.h"
#include "my_compiler.h"
#include "my_inttypes.h"
#include "my_sharedlib.h"
#include "my_sys.h"
#include "mysql/components/services/bits/mysql_mutex_bits.h"
#include "mysql/mysql_lex_string.h"
#include "mysql/strings/m_ctype.h"
#include "mysql_com.h"
#include "mysql_time.h"
#include "sql/auth/auth_common.h"
#include "sql/auth/auth_internal.h"
#include "sql/auth/partial_revokes.h"
#include "sql/malloc_allocator.h"
#include "sql/psi_memory_key.h"
#include "sql/sql_connect.h"
#include "violite.h"
Go to the source code of this file.
|
namespace | boost |
| Tag dispatch for custom Role_properties.
|
|
|
typedef Acl_cache_allocator< ACL_USER * > | Acl_user_ptr_allocator |
|
typedef std::list< ACL_USER *, Acl_user_ptr_allocator > | Acl_user_ptr_list |
|
typedef 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. More...
|
|
typedef boost::property< boost::edge_capacity_t, int > | Role_edge_properties |
|
typedef 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. More...
|
|
typedef boost::graph_traits< Granted_roles_graph >::vertex_descriptor | Role_vertex_descriptor |
| The data type of a vertex in the Granted_roles_graph. More...
|
|
typedef boost::graph_traits< Granted_roles_graph >::edge_descriptor | Role_edge_descriptor |
| The data type of an edge in the Granted_roles_graph. More...
|
|
typedef std::unordered_map< std::string, Role_vertex_descriptor > | Role_index_map |
| The datatype of the map between authids and graph vertex descriptors. More...
|
|
using | degree_s_t = boost::graph_traits< Granted_roles_graph >::degree_size_type |
| The type used for the number of edges incident to a vertex in the graph. More...
|
|
using | out_edge_itr_t = boost::graph_traits< Granted_roles_graph >::out_edge_iterator |
| The type for the iterator returned by out_edges(). More...
|
|
using | in_edge_itr_t = boost::graph_traits< Granted_roles_graph >::in_edge_iterator |
| The type for the iterator returned by in_edges(). More...
|
|
typedef LF_HASH | Acl_cache_internal |
|
|
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. More...
|
|
void | rebuild_cached_acl_users_for_name (void) |
| Build the lists of ACL_USERs which share name or have no name. More...
|
|
template<class T > |
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) |
|
GRANT_NAME * | routine_hash_search (const char *host, const char *ip, const char *db, const char *user, const char *tname, bool proc, bool exact) |
|
GRANT_TABLE * | table_hash_search (const char *host, const char *ip, const char *db, const char *user, const char *tname, bool exact) |
|
GRANT_COLUMN * | column_hash_search (GRANT_TABLE *t, const char *cname, size_t length) |
|
| boost::BOOST_INSTALL_PROPERTY (vertex, acl_user) |
|
Acl_cache * | get_global_acl_cache () |
|
◆ NUM_CREDENTIALS
#define NUM_CREDENTIALS 2 |
◆ PRIMARY_CRED
◆ SECOND_CRED
◆ Acl_cache_internal
◆ Acl_user_ptr_allocator
◆ Acl_user_ptr_list
◆ degree_s_t
The type used for the number of edges incident to a vertex in the graph.
◆ Granted_roles_graph
A graph of all users/roles privilege inheritance.
◆ in_edge_itr_t
The type for the iterator returned by in_edges().
◆ out_edge_itr_t
The type for the iterator returned by out_edges().
◆ Role_edge_descriptor
The data type of an edge in the Granted_roles_graph.
◆ Role_edge_properties
◆ Role_index_map
The datatype of the map between authids and graph vertex descriptors.
◆ Role_properties
Custom vertex properties used in Granted_roles_graph TODO ACL_USER contains too much information.
We only need global access, username and hostname. If this was a POD we don't have to hold the same mutex as ACL_USER.
◆ Role_vertex_descriptor
The data type of a vertex in the Granted_roles_graph.
◆ Acl_cache_lock_mode
Enum for specifying lock type over Acl cache.
Enumerator |
---|
READ_MODE | |
WRITE_MODE | |
◆ cached_acl_users_for_name()
Fetch the list of ACL_USERs which share name or have no name.
- Parameters
-
[in] | name | User entry to be searched |
- Returns
- List of users that share same name
◆ column_hash_search()
◆ get_global_acl_cache()
◆ name_hash_search()
◆ rebuild_cached_acl_users_for_name()
void rebuild_cached_acl_users_for_name |
( |
void |
| ) |
|
Build the lists of ACL_USERs which share name or have no name.
All accounts with same name will be chained so that they can be retrieved by a single lookup. These entries are sorted using ACL_compare to make sure that most specific account is picked up first. Anonymous user is added to each chain.
◆ routine_hash_search()
GRANT_NAME * routine_hash_search |
( |
const char * |
host, |
|
|
const char * |
ip, |
|
|
const char * |
db, |
|
|
const char * |
user, |
|
|
const char * |
tname, |
|
|
bool |
proc, |
|
|
bool |
exact |
|
) |
| |
|
inline |
◆ table_hash_search()
GRANT_TABLE * table_hash_search |
( |
const char * |
host, |
|
|
const char * |
ip, |
|
|
const char * |
db, |
|
|
const char * |
user, |
|
|
const char * |
tname, |
|
|
bool |
exact |
|
) |
| |
|
inline |
◆ acl_check_hosts
◆ acl_dbs
◆ ACL_PREALLOC_SIZE
const size_t ACL_PREALLOC_SIZE = 10U |
◆ acl_proxy_users
◆ acl_restrictions
◆ acl_users
◆ acl_wild_hosts
◆ allow_all_hosts
◆ column_priv_hash
◆ files_charset_info
◆ func_priv_hash
◆ global_acl_memory
◆ grant_version
◆ memex
◆ proc_priv_hash