programing

Maria DB 루트가 없으면 Engine=CONNECT로 테이블을 드롭할 수 없습니다.

subpage 2023. 9. 11. 21:49
반응형

Maria DB 루트가 없으면 Engine=CONNECT로 테이블을 드롭할 수 없습니다.

항목에서와 같이 마리아 DB에서 root으로 테이블을 생성하고 드롭할 수는 있지만 일반 사용자처럼 테이블을 드롭할 수는 없습니다.타벨 엔진이 연결되어 있을 때만 발생합니다.

애스 루트:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON test_database.* To 'user'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> SHOW GRANTS FOR user@localhost;
+--------------------------------------------------------------------------------------------------------------+
| Grants for user@localhost                                                                                   |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user'@'localhost' IDENTIFIED BY PASSWORD '*EE22D94139EAEE5486C30FBC352B12340EEF82F5' |
| GRANT ALL PRIVILEGES ON `test_database`.* TO 'user'@'localhost'                                                    |
+--------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

루트 계정에서 일반 사용자로 로그인:

# mysql -u user -p
Enter password: 

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 20120
Server version: 10.1.9-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [test_database]> CREATE TABLE example (id INT, data VARCHAR(100));
Query OK, 0 rows affected (0.61 sec)

MariaDB [test_database]> DROP TABLE example;
Query OK, 0 rows affected (0.03 sec)

MariaDB [test_database]> CREATE TABLE odbc_test ENGINE=CONNECT TABLE_TYPE=ODBC tabname='sample_table' CONNECTION='DSN=mssql_test;UID=test_user;PWD=password';
Query OK, 0 rows affected (0.03 sec)

MariaDB [test_database]> DROP TABLE odbc_test;
ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: YES)
MariaDB [test_database]> SHOW GRANTS;
+--------------------------------------------------------------------------------------------------------------+
| Grants for user@localhost                                                                                   |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user'@'localhost' IDENTIFIED BY PASSWORD '*EE22D94139EAEE5486C30FBC352B12340EEF82F5' |
| GRANT ALL PRIVILEGES ON `test_database`.* TO 'user'@'localhost'                                                    |
+--------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

MariaDB [test_database]> select current_user;
+-----------------+
| current_user    |
+-----------------+
| user@localhost |
+-----------------+
1 row in set (0.04 sec)

사용자가 engine=connect로 테이블을 드롭하는 데 필요한 권한은 무엇입니까?

  1. 업데이트 1.다음 링크와 같은 csv 파일로 확인: https://mariadb.com/kb/en/mariadb/connect-csv-and-fmt-table-types/

루트로 작동하지만 모든 권한을 가진 사용자로서 테이블을 만들 수도 없습니다.

MariaDB [test_database]> create table people (name char(12) not null,   birth date not null date_format='DD/MM/YY',   children smallint(2) not null) engine=CONNECT table_type=CSV file_name='test.csv' header=1 sep_char=';' quoted=1;

ERROR 1045 (28000): Access denied for user 'user'@'%' (using password: YES)

문제는 해결됐습니다.

GRANT FILE ON *.* TO 'user'@'%';

그럼 내 문제가 해결됐어요 :-)

GRANT FILE ON *.* TO 'user'@'%';

언급URL : https://stackoverflow.com/questions/33962490/maria-db-cant-drop-table-with-engine-connect-without-root

반응형