mysql에서 GRANT 문을 사용하여 사용자에게 권한을 추가할 수 있습니다. 구문은 "GRANT 권한 유형 ON 권한 수준 값 TO 사용자 [IDENTIFIED BY 'password'] [WITH 절];"입니다. 여기서 "user" 매개변수는 다음을 나타냅니다. 사용자 계정이며 형식은 " 'username'@'hostname'"입니다.
이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.
MySQL에서는 GRANT 문을 사용하여 사용자에게 권한을 부여하고 권한을 높일 수 있습니다.
구문 형식은 다음과 같습니다.
GRANT priv_type [(column_list)] ON database.table TO user [IDENTIFIED BY 'password'] [WITH with_option [with_option]...]
그 중:
priv_type 매개변수는 권한 유형을 나타냅니다.
columns_list 매개변수는 권한이 적용되는 열을 나타냅니다.
database.table은 권한 수준을 지정하는 데 사용됩니다.
user 매개변수는 사용자 이름과 호스트 이름으로 구성된 사용자 계정을 나타내며 형식은 "'username'입니다. @'hostname'";
IDENTIFIED BY 매개변수는 사용자가 비밀번호를 설정하는 데 사용됩니다.
password 매개변수는 사용자의 새 비밀번호입니다.
MySQL에서 부여할 수 있는 권한은 다음과 같습니다.
열 권한은 테이블의 특정 열과 관련됩니다. 예를 들어, UPDATE 문을 사용하여 학생 테이블의 이름 열 값에 대한 권한을 업데이트할 수 있습니다.
테이블 권한은 특정 테이블의 모든 데이터와 관련이 있습니다. 예를 들어 SELECT 문을 사용하여 학생 테이블의 모든 데이터에 대한 권한을 쿼리할 수 있습니다.
데이터베이스 권한은 특정 데이터베이스의 모든 테이블과 관련이 있습니다. 예를 들어 기존 데이터베이스 mytest에 새 테이블을 생성할 수 있습니다.
MySQL의 모든 데이터베이스와 관련된 사용자 권한. 예를 들어 기존 데이터베이스를 삭제하거나 새 데이터베이스를 만들 수 있습니다.
따라서 GRANT 문에서 권한 수준을 지정하는 데 사용할 수 있는 값의 형식은 다음과 같습니다.
*: 현재 데이터베이스의 모든 테이블을 나타냅니다.
*.*: 모든 데이터베이스의 모든 테이블을 나타냅니다.
db_name.*: 데이터베이스의 모든 테이블을 나타내고, db_name은 데이터베이스 이름을 지정합니다.
db_name.tbl_name: 데이터베이스의 테이블 또는 뷰를 나타내고, db_name은 데이터베이스 이름을 지정하고, tbl_name은 테이블 이름 또는 뷰 이름을 지정합니다.
db_name.routine_name: 데이터베이스의 저장 프로시저 또는 함수를 나타내며, routine_name은 저장 프로시저 이름 또는 함수 이름을 지정합니다.
TO 절: 존재하지 않는 사용자에게 권한이 부여되면 MySQL은 자동으로 CREATE USER 문을 실행하여 사용자를 생성하지만 해당 사용자에 대한 비밀번호를 설정해야 합니다.
MySQL에서는 GRANT 권한이 있는 사용자만 GRANT 문을 실행할 수 있습니다.
예:
GRANT 문을 사용하여 비밀번호 testPwd를 사용하여 새로운 사용자 testUser를 만듭니다. 사용자 testUser에는 모든 데이터에 대한 쿼리 및 삽입 권한이 있으며 GRANT 권한이 부여됩니다.
mysql> GRANT SELECT,INSERT ON *.* -> TO 'testUser'@'localhost' -> IDENTIFIED BY 'testPwd' -> WITH GRANT OPTION; Query OK, 0 rows affected, 1 warning (0.05 sec)
아래와 같이 SHOW GRANTS 문을 사용하여 testUser 사용자의 권한을 쿼리합니다.
확장 지식: 권한 유형 설명
1) 데이터베이스 권한을 부여할 때 값을 다음과 같이 지정할 수 있습니다.
권한 이름 | 은 사용자 테이블의 필드에 해당합니다. | 설명 |
---|---|---|
SELECT | Select_priv | 은 사용자에게 SELECT 문을 사용하여 특정 데이터베이스의 모든 테이블과 뷰에 액세스할 수 있는 권한을 부여하는 것을 의미합니다. |
INSERT | Insert_priv | 은 INSERT 문을 사용하여 특정 데이터베이스의 모든 테이블에 데이터 행을 추가할 수 있는 권한을 사용자에게 부여하는 것을 의미합니다. |
DELETE | Delete_priv | 은 DELETE 문을 사용하여 특정 데이터베이스의 모든 테이블에서 데이터 행을 삭제할 수 있는 권한을 사용자에게 부여하는 것을 의미합니다. |
UPDATE | Update_priv | 은 UPDATE 문을 사용하여 특정 데이터베이스의 모든 데이터 테이블의 값을 업데이트할 수 있는 권한을 사용자에게 부여하는 것을 의미합니다. |
REFERENCES | References_priv | 은 사용자에게 특정 데이터베이스의 테이블을 가리키는 외래 키를 생성할 수 있는 권한을 부여하는 것을 의미합니다. |
CREATE | Create_priv | 은 권한 있는 사용자가 CREATE TABLE 문을 사용하여 특정 데이터베이스에 새 테이블을 생성하는 데 사용할 수 있는 권한을 나타냅니다. |
ALTER | Alter_priv | 은 ALTER TABLE 문을 사용하여 특정 데이터베이스의 모든 데이터 테이블을 수정할 수 있는 권한을 사용자에게 부여하는 것을 의미합니다. |
SHOW VIEW | Show_view_priv | 은 사용자에게 특정 데이터베이스에 있는 기존 뷰의 뷰 정의를 볼 수 있는 권한을 부여하는 것을 의미합니다. |
CREATE ROUTINE | Create_routine_priv | 은 사용자에게 특정 데이터베이스에 대한 저장 프로시저 및 저장 함수를 생성할 수 있는 권한을 부여하는 것을 의미합니다. |
ALTER ROUTINE | Alter_routine_priv | 은 사용자에게 데이터베이스의 기존 저장 프로시저와 저장 함수를 업데이트하고 삭제할 수 있는 권한을 부여하는 것을 의미합니다. |
INDEX | Index_priv | 은 특정 데이터베이스의 모든 데이터 테이블에 대한 인덱스를 정의하고 삭제할 수 있는 권한을 사용자에게 부여하는 것을 의미합니다. |
DROP | Drop_priv | 은 사용자에게 특정 데이터베이스의 모든 테이블과 뷰를 삭제할 수 있는 권한을 부여하는 것을 의미합니다. |
CREATE TEMPORARY TABLES | Create_tmp_table_priv | 은 사용자에게 특정 데이터베이스에 임시 테이블을 생성할 수 있는 권한을 부여하는 것을 의미합니다. |
CREATE VIEW | Create_view_priv | 은 사용자에게 특정 데이터베이스에 새 뷰를 생성할 수 있는 권한을 부여하는 것을 의미합니다. |
EXECUTE ROUTINE | Execute_priv | 은 사용자에게 특정 데이터베이스의 저장 프로시저 및 저장 함수를 호출할 수 있는 권한을 부여하는 것을 의미합니다. |
LOCK TABLES | Lock_tables_priv | 은 사용자에게 특정 데이터베이스의 기존 데이터 테이블을 잠글 수 있는 권한을 부여하는 것을 의미합니다. |
ALL 또는 ALL PRIVILEGES 또는 SUPER | Super_priv | 는 위의 모든 권한/슈퍼 권한을 의미합니다. |
2) 테이블 권한을 부여할 때
사용자 테이블의 필드에 해당합니다 | Description | |
---|---|---|
Select_priv | 사용자에게 SELECT 문을 사용하여 특정 테이블에 액세스할 수 있는 권한을 부여합니다 | |
Insert_priv | 사용자에게 INSERT 문에 대한 액세스 권한을 부여하여 특정 테이블에 데이터 행을 추가합니다. | |
Delete_priv | 사용자에게 DELETE 문을 사용하여 특정 테이블에서 데이터 행을 삭제할 수 있는 권한을 부여합니다 | |
Drop_priv | 사용자에게 데이터 테이블 삭제 권한을 부여합니다 | |
Update_priv | 사용자에게 UPDATE 문을 사용하여 특정 데이터 테이블을 업데이트할 수 있는 권한을 부여합니다 | |
Alter_priv | 사용자에게 권한을 부여합니다. ALTER TABLE 문을 사용하여 데이터 테이블을 수정하려면 | |
References_priv | 사용자에게 특정 데이터 테이블을 참조하기 위한 외래 키를 생성할 수 있는 권한을 부여합니다. | |
Create_priv | 사용자에게 부여합니다. 특정 이름을 사용하여 데이터 테이블을 생성할 수 있는 권한 | |
Index_priv | 사용자에게 테이블에 인덱스를 정의할 수 있는 권한을 부여합니다 | |
Super_priv | 모든 권한 이름 |
4) 가장 효율적인 권한은 사용자 권한입니다.
사용자 권한을 부여할 때 데이터베이스 권한을 부여할 때 지정할 수 있는 모든 값 외에도 은 다음 값일 수도 있습니다.
위 내용은 mysql에서 권한을 높이는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!