mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
583eb96c24
- CREATE PACKAGE [BODY] statements are now entirely written to mysql.proc with type='PACKAGE' and type='PACKAGE BODY'. - CREATE PACKAGE BODY now supports IF NOT EXISTS - DROP PACKAGE BODY now supports IF EXISTS - CREATE OR REPLACE PACKAGE [BODY] is now supported - CREATE PACKAGE [BODY] now support the DEFINER clause: CREATE DEFINER user@host PACKAGE pkg ... END; CREATE DEFINER user@host PACKAGE BODY pkg ... END; - CREATE PACKAGE [BODY] now supports SQL SECURITY and COMMENT clauses, e.g.: CREATE PACKAGE p1 SQL SECURITY INVOKER COMMENT "comment" AS ... END; - Package routines are now created from the package CREATE PACKAGE BODY statement and don't produce individual records in mysql.proc. - CREATE PACKAGE BODY now supports package-wide variables. Package variables can be read and set inside package routines. Package variables are stored in a separate sp_rcontext, which is cached in THD on the first packate routine call. - CREATE PACKAGE BODY now supports the initialization section. - All public routines (i.e. declared in CREATE PACKAGE) must have implementations in CREATE PACKAGE BODY - Only public package routines are available outside of the package - {CREATE|DROP} PACKAGE [BODY] now respects CREATE ROUTINE and ALTER ROUTINE privileges - "GRANT EXECUTE ON PACKAGE BODY pkg" is now supported - SHOW CREATE PACKAGE [BODY] is now supported - SHOW PACKAGE [BODY] STATUS is now supported - CREATE and DROP for PACKAGE [BODY] now works for non-current databases - mysqldump now supports packages - "SHOW {PROCEDURE|FUNCTION) CODE pkg.routine" now works for package routines - "SHOW PACKAGE BODY CODE pkg" now works (the package initialization section) - A new package body level MDL was added - Recursive calls for package procedures are now possible - Routine forward declarations in CREATE PACKATE BODY are now supported. - Package body variables now work as SP OUT parameters - Package body variables now work as SELECT INTO targets - Package body variables now support ROW, %ROWTYPE, %TYPE
110 lines
2.8 KiB
Text
110 lines
2.8 KiB
Text
SHOW STATUS LIKE 'Acl%';
|
|
Variable_name Value
|
|
Acl_column_grants 0
|
|
Acl_database_grants 2
|
|
Acl_function_grants 0
|
|
Acl_procedure_grants 0
|
|
Acl_package_spec_grants 0
|
|
Acl_package_body_grants 0
|
|
Acl_proxy_users 2
|
|
Acl_role_grants 0
|
|
Acl_roles 0
|
|
Acl_table_grants 0
|
|
Acl_users 4
|
|
SELECT count(*) COLUMN_GRANTS from mysql.columns_priv;
|
|
COLUMN_GRANTS
|
|
0
|
|
SELECT count(*) DATABASE_GRANTS from mysql.db;
|
|
DATABASE_GRANTS
|
|
2
|
|
SELECT count(*) FUNCTION_GRANTS from mysql.procs_priv where routine_type='FUNCTION';
|
|
FUNCTION_GRANTS
|
|
0
|
|
SELECT count(*) PROCEDURE_GRANTS from mysql.procs_priv where routine_type='PROCEDURE';
|
|
PROCEDURE_GRANTS
|
|
0
|
|
SELECT count(*) PROXY_USERS from mysql.proxies_priv;
|
|
PROXY_USERS
|
|
2
|
|
SELECT count(*) ROLE_GRANTS from mysql.roles_mapping;
|
|
ROLE_GRANTS
|
|
0
|
|
SELECT count(*) ROLES from mysql.user where is_role='Y';
|
|
ROLES
|
|
0
|
|
SELECT count(*) TABLE_GRANTS from mysql.tables_priv;
|
|
TABLE_GRANTS
|
|
0
|
|
SELECT count(*) USERS from mysql.user where is_role='N';
|
|
USERS
|
|
4
|
|
CREATE USER u1;
|
|
CREATE ROLE r1;
|
|
CREATE ROLE r2;
|
|
GRANT PROXY ON root TO u1;
|
|
GRANT SELECT ON *.* to u1;
|
|
GRANT SELECT ON *.* to r1;
|
|
GRANT DELETE ON mysql.* to u1;
|
|
GRANT DELETE ON mysql.* to r1;
|
|
GRANT INSERT ON mysql.user to u1;
|
|
GRANT INSERT ON mysql.user to r1;
|
|
GRANT UPDATE (host) ON mysql.user to u1;
|
|
GRANT UPDATE (host) ON mysql.user to r1;
|
|
GRANT r1 to u1;
|
|
GRANT r2 to r1;
|
|
create procedure mysql.test_proc (OUT param1 INT)
|
|
begin
|
|
select COUNT(*) into param1 from mysql.roles_mapping;
|
|
end|
|
|
GRANT EXECUTE ON PROCEDURE mysql.test_proc TO r1;
|
|
GRANT EXECUTE ON PROCEDURE mysql.test_proc TO u1;
|
|
CREATE FUNCTION mysql.test_func (param INT) RETURNS INT
|
|
RETURN (SELECT COUNT(*) FROM mysql.user);
|
|
GRANT EXECUTE ON FUNCTION mysql.test_func TO r1;
|
|
GRANT EXECUTE ON FUNCTION mysql.test_func TO u1;
|
|
GRANT EXECUTE ON FUNCTION mysql.test_func TO r2;
|
|
SHOW STATUS LIKE 'Acl%';
|
|
Variable_name Value
|
|
Acl_column_grants 2
|
|
Acl_database_grants 4
|
|
Acl_function_grants 3
|
|
Acl_procedure_grants 2
|
|
Acl_package_spec_grants 0
|
|
Acl_package_body_grants 0
|
|
Acl_proxy_users 3
|
|
Acl_role_grants 4
|
|
Acl_roles 2
|
|
Acl_table_grants 2
|
|
Acl_users 5
|
|
SELECT count(*) COLUMN_GRANTS from mysql.columns_priv;
|
|
COLUMN_GRANTS
|
|
2
|
|
SELECT count(*) DATABASE_GRANTS from mysql.db;
|
|
DATABASE_GRANTS
|
|
4
|
|
SELECT count(*) FUNCTION_GRANTS from mysql.procs_priv where routine_type='FUNCTION';
|
|
FUNCTION_GRANTS
|
|
3
|
|
SELECT count(*) PROCEDURE_GRANTS from mysql.procs_priv where routine_type='PROCEDURE';
|
|
PROCEDURE_GRANTS
|
|
2
|
|
SELECT count(*) PROXY_USERS from mysql.proxies_priv;
|
|
PROXY_USERS
|
|
3
|
|
SELECT count(*) ROLE_GRANTS from mysql.roles_mapping;
|
|
ROLE_GRANTS
|
|
4
|
|
SELECT count(*) ROLES from mysql.user where is_role='Y';
|
|
ROLES
|
|
2
|
|
SELECT count(*) TABLE_GRANTS from mysql.tables_priv;
|
|
TABLE_GRANTS
|
|
2
|
|
SELECT count(*) USERS from mysql.user where is_role='N';
|
|
USERS
|
|
5
|
|
DROP PROCEDURE mysql.test_proc;
|
|
DROP FUNCTION mysql.test_func;
|
|
DROP ROLE r2;
|
|
DROP ROLE r1;
|
|
DROP USER u1;
|