[mysql] 데이터베이스에 ** all ** 권한 부여

데이터베이스를 만들었습니다 (예 : ‘mydb’).

CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;

이제 어디서나 데이터베이스에 로그인 할 수 있지만 테이블을 만들 수는 없습니다.

해당 데이터베이스 및 향후 테이블에 대한 모든 권한을 부여하는 방법 ‘mydb’데이터베이스에서 테이블을 만들 수 없습니다. 나는 항상 얻는다 :

CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'



답변

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;

이것이 내가 “슈퍼 사용자”권한을 만드는 방법입니다 (일반적으로 호스트를 지정하지만).

중요 사항

이 답변은 액세스 문제를 해결할 수 있지만 다른 사용자의 권한을 편집WITH GRANT OPTION 할 수있는 MySQL 사용자를 만듭니다 .

GRANT OPTION 권한을 사용하면 다른 사용자에게 자신이 소유 한 권한을 다른 사용자에게 제공하거나 다른 사용자로부터 제거 할 수 있습니다.

보안상의 이유로 일반 사용자가 액세스 할 수있는 프로세스 (예 : 웹 사이트)에이 유형의 사용자 계정을 사용해서는 안됩니다. 해당 종류의 데이터베이스 권한 만있는 사용자작성하는 것이 좋습니다 .


답변

이것은 오래된 질문이지만 허용되는 대답이 안전하다고 생각하지 않습니다. 수퍼 유저를 생성하는 데는 좋지만 단일 데이터베이스에 대한 권한을 부여하려는 경우에는 좋지 않습니다.

grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';

%소켓 통신을 다루지 않는 것 같습니다 localhost. WITH GRANT OPTION수퍼 유저에게만 유용합니다. 그렇지 않으면 일반적으로 보안 위험이 있습니다.

MySQL 5.7+ 업데이트 는 다음과 같이 경고합니다.

GRANT 문을 사용하여 권한 이외의 기존 사용자 특성을 수정하는 것은 더 이상 사용되지 않으며 향후 릴리스에서 제거 될 예정입니다. 이 작업에는 ALTER USER 문을 사용하십시오.

따라서 비밀번호 설정은 별도의 명령을 사용해야합니다. @ scary-wombat의 의견에 감사드립니다.

ALTER USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
ALTER USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';

도움이 되었기를 바랍니다.


답변

이것은 일부 사람들에게 도움이 될 것입니다.

MySQL 명령 행에서 :

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

안타깝게도이 시점에서 newuser에게는 데이터베이스 관련 작업이 없습니다. 사실, 새로운 사용자가 (비밀번호, 비밀번호로) 로그인을 시도하면 MySQL 쉘에 도달 할 수 없습니다.

따라서 가장 먼저해야 할 일은 필요한 정보에 대한 액세스 권한을 사용자에게 제공하는 것입니다.

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

이 명령의 별표는 데이터베이스 및 테이블 (각각)이 액세스 할 수 있음을 나타냅니다.이 특정 명령을 사용하면 모든 데이터베이스 및 테이블에서 모든 작업을 읽고 편집하고 실행하고 수행 할 수 있습니다.

새 사용자에 대해 설정하려는 권한을 완료 한 후에는 항상 모든 권한을 다시로드하십시오.

FLUSH PRIVILEGES;

변경 사항이 적용됩니다.

자세한 정보 : http://dev.mysql.com/doc/refman/5.6/en/grant.html

커맨드 라인에 익숙하지 않다면 MySQL workbench , Navicat 또는 SQLyog 와 같은 클라이언트를 사용할 수 있습니다


답변

 1. 데이터베이스 생성

CREATE DATABASE db_name;

 2. 데이터베이스 db_name의 사용자 이름을 작성하십시오.

GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';

 3. 데이터베이스를 사용하십시오

USE db_name;

 4. 마지막으로 데이터베이스 db_name에 있고 create, select 및 insert 작업과 같은 명령을 실행합니다.


답변

이 SQL은 모든 데이터베이스에 기본 권한 만 부여합니다. 그것들은 Drupal 또는 WordPress에 충분하며 한 명의 개발자가 로컬 프로젝트를 설명 할 수 있습니다.

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP,
    INDEX, ALTER, CREATE TEMPORARY TABLES
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';


답변

GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY 'mypasswd';

스키마에 대한 권한으로 작동합니다. 🙂

선택 사항 : mypasswd추가 한 후WITH GRANT OPTION


답변

GRANT OPTION항상 권한 거부 오류가 발생하지 않고을 추가하여 작동하도록 만들 수 있습니다.

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION;