>  기사  >  데이터 베이스  >  mysql 사용자 이름과 비밀번호를 추가하는 명령문은 무엇입니까?

mysql 사용자 이름과 비밀번호를 추가하는 명령문은 무엇입니까?

青灯夜游
青灯夜游원래의
2020-10-15 11:04:179235검색

mysql에 사용자 이름과 비밀번호를 추가하는 명령문: 1. CREATE USER 문, 일반 사용자를 생성하고 해당 비밀번호를 설정할 수 있습니다. 2. INSERT 문, 새로운 일반 사용자를 만들고 해당 비밀번호를 설정할 수 있습니다. 문, 새 사용자를 생성하고 해당 비밀번호와 사용자 권한을 설정합니다.

mysql 사용자 이름과 비밀번호를 추가하는 명령문은 무엇입니까?

(추천 튜토리얼: mysql 비디오 튜토리얼)

MySQL이 설치되면 기본적으로 root라는 사용자가 생성됩니다. 이 사용자는 슈퍼 권한을 가지며 전체 MySQL 서버를 제어할 수 있습니다.

MySQL의 일상적인 관리 및 운영에 있어서 누군가 루트 사용자를 악의적으로 이용하여 데이터베이스를 제어하는 ​​것을 방지하기 위해 일반적으로 적절한 권한을 가진 일부 사용자를 생성하고 루트 사용자를 사용하여 로그인하는 경우가 많습니다. 데이터 보안을 보장하기 위해 시스템에 접근합니다.

MySQL은 사용자 생성, 사용자 이름 및 비밀번호 추가를 위한 다음 3가지 방법을 제공합니다.

  • CREATE USER 문을 사용하여 사용자를 생성하고 사용자 이름과 비밀번호를 추가합니다.

  • mysql.user 테이블에 사용자를 추가하고 사용자 이름과 비밀번호를 추가하세요.

  • GRANT 문을 사용하여 사용자를 생성하고 사용자 이름과 비밀번호를 추가하세요.

다음은 예제를 바탕으로 이 3가지 방법을 자세히 설명합니다.

1. CREATE USER 문을 사용하여 사용자를 생성합니다.

CREATE USER 문을 사용하여 MySQL 사용자를 생성하고 해당 비밀번호를 설정할 수 있습니다. 기본 구문 형식은 다음과 같습니다.

CREATE USER <用户> [ IDENTIFIED BY [ PASSWORD ] &#39;password&#39; ] [ ,用户 [ IDENTIFIED BY [ PASSWORD ] &#39;password&#39; ]]

매개 변수 설명은 다음과 같습니다.

1) 사용자

는 사용자 계정을 생성하도록 지정하며 형식은 user_name'@'host_name입니다. 여기서 user_name은 사용자 이름이고, host_name은 사용자가 MySQL에 연결하는 데 사용하는 호스트 이름인 호스트 이름입니다. 생성 과정에서 호스트 이름을 지정하지 않고 사용자 이름만 지정한 경우 호스트 이름은 기본적으로 호스트 그룹을 나타내는 "%"로 지정됩니다. 즉, 모든 호스트에 권한이 열려 있습니다.

2) IDENTIFIED BY 절

은 사용자 비밀번호를 지정하는 데 사용됩니다. 신규 사용자에게는 초기 비밀번호가 필요하지 않습니다. 사용자에게 비밀번호가 없으면 이 절을 생략할 수 있습니다.

3) PASSWORD 'password'

PASSWORD는 해시 값을 사용하여 비밀번호를 설정하는 것을 의미합니다. 비밀번호가 일반 문자열인 경우 PASSWORD 키워드를 사용할 필요가 없습니다. 'password'는 사용자가 로그인하는 데 사용하는 비밀번호를 나타내며 작은따옴표로 묶어야 합니다.

CREATE USER 문을 사용할 때 다음 사항에 주의해야 합니다.

  • CREATE USER 문에는 초기 비밀번호를 지정할 필요가 없습니다. 그러나 보안 관점에서 이 접근 방식은 권장되지 않습니다.

  • CREATE USER 문을 사용하려면 mysql 데이터베이스에 대한 INSERT 권한이나 전역 CREATE USER 권한이 있어야 합니다.

  • CREATE USER 문을 사용하여 사용자를 생성한 후 MySQL은 mysql 데이터베이스의 사용자 테이블에 새 레코드를 추가합니다.

  • CREATE USER 문은 동시에 여러 사용자를 생성할 수 있습니다. 여러 사용자는 쉼표로 구분됩니다.

새로 생성된 사용자에게는 권한이 거의 없으며 권한이 필요하지 않은 작업만 수행할 수 있습니다. 예를 들어 MySQL에 로그인하고 SHOW 문을 사용하여 모든 스토리지 엔진 및 문자 집합 목록을 쿼리하는 등의 작업을 수행합니다. 두 명의 사용자가 동일한 사용자 이름을 가지고 있지만 호스트 이름이 다른 경우 MySQL은 이들을 두 명의 사용자로 간주하고 두 사용자에게 서로 다른 권한 집합을 할당할 수 있도록 허용합니다.

예제 1

CREATE USER를 사용하여 사용자를 생성합니다. 사용자 이름은 test1, 비밀번호는 test1, 호스트 이름은 localhost입니다. SQL문과 실행과정은 다음과 같다.

mysql> CREATE USER &#39;test1&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;test1&#39;;
Query OK, 1 rows affected (0.06 sec)

결과는 test1 사용자가 성공적으로 생성되었음을 보여줍니다.

실제 응용에서는 일반 텍스트로 비밀번호를 지정하는 것을 피해야 합니다. PASSWORD 키워드를 사용하여 비밀번호의 해시 값을 사용하여 비밀번호를 설정할 수 있습니다.

예제 2

MySQL에서는 test1 해시값을 보기 위한 SQL문과 실행 과정은 다음과 같습니다.

mysql> SELECT password(&#39;test1&#39;);
+-------------------------------------------+
| password(&#39;test1&#39;)                         |
+-------------------------------------------+
| *06C0BF5B64ECE2F648B5F048A71903906BA08E5C |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)
“*06C0BF5B64ECE2F648B5F048A71903906BA08E5C”就是 test1 的哈希值。下面创建用户 test1,SQL 语句和执行过程如下:
mysql> CREATE USER &#39;test1&#39;@&#39;localhost&#39;IDENTIFIED BY PASSWORD &#39;*06C0BF5B64ECE2F648B5F048A71903906BA08E5C&#39;;
Query OK, 0 rows affected, 1 warning (0.00 sec)

실행 성공 후. , 비밀번호 "test1"을 사용하여 로그인하실 수 있습니다.

2. INSERT 문을 사용하여 새 사용자를 만듭니다

INSERT 문을 사용하여 mysql.user 테이블에 사용자 정보를 추가할 수 있지만 mysql.user 테이블에 대한 INSERT 권한이 있어야 합니다. 일반적으로 INSERT 문은 호스트, 사용자 및 인증_문자열 세 필드의 값만 추가합니다.

MySQL 5.7 사용자 테이블의 비밀번호 필드가 비밀번호에서 인증_문자열로 변경되었습니다. MySQL 5.7 이전 버전을 사용하는 경우 인증_문자열 필드를 비밀번호로 바꾸세요.

INSERT 문을 사용하여 사용자를 생성하는 코드는 다음과 같습니다.

INSERT INTO mysql.user(Host, User,  authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES (&#39;hostname&#39;, &#39;username&#39;, PASSWORD(&#39;password&#39;), &#39;&#39;, &#39;&#39;, &#39;&#39;);

mysql 데이터베이스의 사용자 테이블에 있는 ssl_cipher, x509_issuer 및 x509_subject 세 필드에는 기본값이 없으므로 삽입 시 이 세 필드를 설정해야 합니다. 사용자 테이블에 새 레코드를 추가합니다. 그렇지 않으면 INSERT 문이 실행되지 않습니다.

예제 3

다음은 INSERT 문을 사용하여 test2라는 사용자를 생성합니다. 호스트 이름은 localhost이고 비밀번호도 test2입니다. SQL 문 및 실행 과정은 다음과 같습니다.

mysql> INSERT INTO mysql.user(Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES (&#39;localhost&#39;, &#39;test2&#39;, PASSWORD(&#39;test2&#39;), &#39;&#39;, &#39;&#39;, &#39;&#39;);
Query OK, 1 row affected, 1 warning (0.02 sec)

结果显示,新建用户成功。但是这时如果通过该账户登录 MySQL 服务器,不会登录成功,因为 test2 用户还没有生效。

可以使用 FLUSH 命令让用户生效,命令如下:

FLUSH PRIVILEGES;

使用以上命令可以让 MySQL 刷新系统权限相关表。执行 FLUSH 命令需要 RELOAD 权限。

注意:user 表中的 User 和 Host 字段区分大小写,创建用户时要指定正确的用户名称或主机名。

3. 使用GRANT语句新建用户

虽然 CREATE USER 和 INSERT INTO 语句都可以创建普通用户,但是这两种方式不便授予用户权限。于是 MySQL 提供了 GRANT 语句。

使用 GRANT 语句创建用户的基本语法形式如下:

GRANT priv_type ON database.table TO user [IDENTIFIED BY [PASSWORD] &#39;password&#39;]

其中:

  • priv_type 参数表示新用户的权限;

  • database.table 参数表示新用户的权限范围,即只能在指定的数据库和表上使用自己的权限;

  • user 参数指定新用户的账号,由用户名和主机名构成;

  • IDENTIFIED BY 关键字用来设置密码;

  • password 参数表示新用户的密码。

例 4

下面使用 GRANT 语句创建名为 test3 的用户,主机名为 localhost,密码为 test3。该用户对所有数据库的所有表都有 SELECT 权限。SQL 语句和执行过程如下:

mysql> GRANT SELECT ON*.* TO &#39;test3&#39;@localhost IDENTIFIED BY &#39;test3&#39;;
Query OK, 0 rows affected, 1 warning (0.01 sec)

其中,“*.*” 表示所有数据库下的所有表。结果显示创建用户成功,且 test3 用户对所有表都有查询(SELECT)权限。

技巧:GRANT 语句是 MySQL 中一个非常重要的语句,它可以用来创建用户、修改用户密码和设置用户权限。教程后面会详细介绍如何使用 GRANT 语句修改密码、更改权限。

위 내용은 mysql 사용자 이름과 비밀번호를 추가하는 명령문은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.