Category: Webserver

웹 사이트 만들어서 운영하기.

  • 워드프레스 설치 오류: CREATE command denied 해결 방법

    워드프레스 설치 과정에서 다음과 유사한 오류 메시지가 발생하며 진행이 멈출 수 있습니다.

    WordPress database error: [CREATE command denied to user 'wordpressdatabase'@'localhost' for table `wordpressdatabase`.`wp_users`]

    이 오류는 워드프레스가 데이터베이스에 필요한 테이블을 생성하려고 시도할 때, 해당 데이터베이스 사용자에게 테이블 생성 권한(CREATE 권한)이 없기 때문에 발생합니다.

    본 문서에서는 이 오류의 원인과 해결 방법을 단계별로 안내합니다.

    1. 오류 원인 분석

    오류 메시지 CREATE command denied to user 'wordpressdatabase'@'localhost' for table \wordpressdatabase`.`wp_users“는 다음 정보를 담고 있습니다.

    • CREATE command denied: 테이블을 생성하려는 명령이 거부되었습니다.
    • user 'wordpressdatabase'@'localhost': 데이터베이스에 접근하려는 사용자가 'wordpressdatabase'이며, 접속 위치는 'localhost'입니다. 이는 워드프레스가 라즈베리파이 내에서 데이터베이스에 접속하려고 시도하고 있음을 의미합니다.
    • **for table \wordpressdatabase`.`wp_users`**: 생성하려던 테이블이‘wordpressdatabase’데이터베이스 내의‘wp_users’` 테이블입니다. 워드프레스는 사용자 정보를 저장하기 위해 이 테이블을 필요로 합니다.

    결론적으로, 워드프레스 설정 과정에서 입력한 데이터베이스 사용자 'wordpressdatabase'@'localhost'에게 'wordpressdatabase' 데이터베이스 내에 테이블을 생성할 권한이 부족하여 오류가 발생한 것입니다.

    2. 해결 방법: MariaDB 권한 설정

    이 문제를 해결하기 위해서는 MariaDB 서버에 접속하여 'wordpressdatabase'@'localhost' 사용자에게 'wordpressdatabase' 데이터베이스에 테이블을 생성할 수 있는 CREATE 권한을 부여해야 합니다.

    단계별 해결 절차:

    2.1. MariaDB 서버 접속

    1. 라즈베리파이의 터미널을 엽니다.
    2. 다음 명령어를 사용하여 MariaDB 서버에 관리자 권한(root 사용자)으로 접속합니다.
    3. sudo mysql -u root -p 아니면 mysql -u root -p
    4. 비밀번호를 입력하라는 메시지가 나타나면 root 사용자의 비밀번호를 입력하고 엔터 키를 누릅니다.

    2.2. 데이터베이스 선택 (선택 사항)

    작업할 데이터베이스를 명시적으로 선택할 수 있습니다.

    USE wordpressdatabase;

    2.3. 사용자에게 CREATE 권한 부여

    다음 명령어를 사용하여 'wordpressdatabase'@'localhost' 사용자에게 'wordpressdatabase' 데이터베이스 내에 테이블을 생성할 수 있는 CREATE 권한을 부여합니다.

    GRANT CREATE ON wordpressdatabase.* TO 'wordpressdatabase'@'localhost';
    • GRANT CREATE: CREATE 권한을 부여하는 명령어입니다.
    • ON wordpressdatabase.*: 'wordpressdatabase' 데이터베이스의 모든 테이블(*)에 대한 권한을 의미합니다.
    • TO 'wordpressdatabase'@'localhost': 권한을 부여할 사용자 이름('wordpressdatabase')과 접속 호스트('localhost')를 지정합니다.

    2.4. 필요한 추가 권한 부여 (권장)

    워드프레스는 테이블 생성 외에도 데이터를 삽입, 조회, 수정, 삭제하는 등 다양한 데이터베이스 작업을 수행합니다. 원활한 워드프레스 설치 및 운영을 위해 다음과 같은 기본적인 권한들을 함께 부여하는 것을 권장합니다.

    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON wordpressdatabase.* TO 'wordpressdatabase'@'localhost';

    이 명령어는 'wordpressdatabase'@'localhost' 사용자에게 'wordpressdatabase' 데이터베이스의 모든 테이블에 대해 다음 권한들을 부여합니다.

    • SELECT: 데이터 조회
    • INSERT: 데이터 삽입
    • UPDATE: 데이터 수정
    • DELETE: 데이터 삭제
    • CREATE: 테이블 생성
    • DROP: 테이블 삭제
    • INDEX: 인덱스 생성
    • ALTER: 테이블 구조 변경

    2.5. 권한 변경 사항 적용

    권한을 부여한 후에는 반드시 다음 명령어를 실행하여 변경 사항을 MariaDB 서버에 적용해야 합니다.

    FLUSH PRIVILEGES;

    2.6. MariaDB 서버 접속 종료

    모든 권한 설정을 완료했으면 다음 명령어를 사용하여 MariaDB 프롬프트를 종료합니다.

    exit

    3. 추가 확인 사항

    • 사용자 및 데이터베이스 존재 여부: 워드프레스 설치를 시도하기 전에 'wordpressdatabase' 데이터베이스와 'wordpressdatabase' 사용자가 MariaDB에 이미 생성되어 있어야 합니다. 만약 생성되어 있지 않다면 MariaDB에 접속하여 먼저 생성해야 합니다.
      • 데이터베이스 생성: CREATE DATABASE wordpressdatabase;
      • 사용자 생성 및 비밀번호 설정: CREATE USER 'wordpressdatabase'@'localhost' IDENTIFIED BY '원하는password';