MySQL 설치 문제 해결#
Mattermost 서버를 실행하기 전에 먼저 데이터베이스를 설치하고 구성해야 합니다. /opt/mattermost 디렉토리로 이동하여 sudo -u mattermost bin/mattermost 명령을 입력하여 Mattermost를 시작할 수 있습니다. Mattermost 서버가 데이터베이스에 연결할 수 없으면 시작에 실패합니다. 이 섹션에서는 Mattermost를 처음 시작할 때 발생할 수 있는 MySQL 데이터베이스 문제를 다룹니다.
참고
특정 Mattermost 릴리스에 대한 추가 데이터베이스 튜닝 가이드가 제공됩니다. 자세한 내용은 중요 업그레이드 참고사항 문서를 참조하세요.
MySQL 데이터베이스에 특화된 구성 옵션에 대한 자세한 내용은 데이터베이스 구성 설정 문서를 참조하세요.
MySQL 설치 방법은 사용하는 Linux 배포판에 따라 다릅니다. 하지만 MySQL이 설치되면 구성 지침은 동일합니다. 모든 배포판에서 mattermost 데이터베이스와 mattermost 데이터베이스 사용자를 생성해야 합니다. 이러한 데이터베이스 객체를 생성하지 않거나 Mattermost 구성 파일 /opt/mattermost/config/config.json 에서 잘못 참조하면 Mattermost가 실패합니다. 여기서 제공하는 문제 해결 팁은 이러한 특정 문제를 다룹니다.
진행하기 전에 MySQL 서버가 실행 중인지 확인하세요. mysqladmin -u root -p status 명령을 실행하여 확인할 수 있습니다. 프롬프트가 표시되면 비밀번호를 입력하세요. MySQL이 실행 중이면 다음과 같은 출력이 표시됩니다:
Uptime: 877134 Threads: 1 Questions: 9902 Slow queries: 0 Opens: 522 Flush tables: 1 Open tables: 371 Queries per second avg: 0.011
MySQL이 실행되지 않는 경우 배포판의 설치 지침을 검토하세요.
경고
이 섹션에서 사용하는 일부 명령은 데이터베이스를 변경합니다. Mattermost 설치가 실패한 경우에만 이러한 명령을 사용하세요. 작동하는 Mattermost 설치의 경우 MySQL 데이터베이스를 직접 조작하지 마세요.
mattermost 데이터베이스#
설치 중에 생성되는 데이터베이스의 이름은 mattermost 입니다. 이 데이터베이스를 생성하지 못하거나 이름을 잘못 지정하면 Mattermost 서버를 시작하려고 할 때 다음과 같은 오류가 표시됩니다:
[2017/09/20 17:11:37 EDT] [INFO] Pinging SQL master database [2017/09/20 17:11:37 EDT] [ERROR] Failed to ping DB retrying in 10 seconds err-Error 1044: Access denied for user 'mmuser'@'%' to database 'mattermost'
MySQL이 mattermost 데이터베이스에 대한 접근을 명시적으로 거부하고 있습니다. 이는 mattermost 라는 이름의 데이터베이스를 생성하지 못했거나 /opt/mattermost/config/config.json 파일에서 이 데이터베이스를 잘못 참조했을 수 있음을 의미합니다.
데이터베이스 존재 여부 확인
mattermost 데이터베이스가 존재하는지 확인하려면 mysql -u root -p 를 실행하여 MySQL을 root 로 열어주세요. 프롬프트가 표시되면 비밀번호를 입력하고 show databases; 명령을 실행하세요. 이 명령은 모든 데이터베이스를 표시합니다. 다음과 유사한 내용이 표시되어야 합니다:
+--------------------+ | Database | +--------------------+ | information_schema | | mattermost | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.03 sec)
mattermost 데이터베이스 없음
mattermost 데이터베이스가 존재하지 않는 경우, MySQL을 root로 열고 create database mattermost; 명령을 실행하여 mattermost 라는 이름의 데이터베이스를 생성하세요.
실수로 잘못된 이름으로 데이터베이스를 생성한 경우, drop database misnamed; 명령을 실행하여 제거할 수 있습니다.
데이터베이스를 생성한 후, /opt/mattermost 디렉토리로 이동하여 sudo -u mattermost bin/mattermost 명령을 입력하여 Mattermost 서버를 다시 시작해보세요.
mattermost 데이터베이스 존재
mattermost 데이터베이스가 존재하는 경우, /opt/mattermost/config/config.json 파일에서 데이터베이스 드라이버를 올바르게 정의했는지 확인하세요. 텍스트 편집기에서 이 파일을 열고 "DataSource" 의 값을 검토하세요. 다음과 같아야 합니다:
"mmuser:*mmuser-password*@tcp(*host-name-or-IP*:3306)/mattermost?charset=utf8mb4,utf8&writeTimeout=30s"
DataSource 요소 바로 위에 있는 DriverName 요소가 mysql 로 설정되어 있는지도 확인해야 합니다.
오류를 수정한 경우, /opt/mattermost 디렉토리로 이동하여 sudo -u mattermost bin/mattermost 명령을 입력하여 Mattermost 서버를 다시 시작하세요.
데이터베이스 사용자#
설치 중에 mysql 프롬프트에서 다음 명령을 실행하여 MySQL 데이터베이스 사용자를 생성해야 합니다
- samp:
create user ‘mmuser’@’%’ identified by ‘{mmuser-password}’;.
mmuser-password 값은 선택한 비밀번호의 자리 표시자입니다. 와일드 카드 % 대신 IP 주소를 지정했을 수도 있습니다.
참고
MySQL 사용자는 사용자 이름과 MySQL에 접근하는 호스트로 완전히 정의됩니다. 이러한 요소는 @ 기호로 구분됩니다. % 문자는 사용자가 모든 IP 주소에서 MySQL에 접근할 수 있음을 나타내는 와일드 카드입니다. 생성한 사용자가 10.10.10.2 와 같은 특정 IP 주소에서 MySQL에 접근하는 경우, 그에 따라 작업을 조정하세요.
생성한 사용자와 호스트 조합이 존재하지 않는 경우, 다음과 같은 오류가 표시됩니다:
[2017/09/20 17:06:18 EDT] [INFO] Pinging SQL master database [2017/09/20 17:06:18 EDT] [ERROR] Failed to ping DB retrying in 10 seconds err-Error 1045: Access denied for user 'mmuser'@'localhost' (using password: YES)
mmuser 존재 여부 확인
이 사용자가 존재하는지 확인하려면 root 권한으로 MySQL에 로그인하세요: mysql -u root -p.
메시지가 표시되면 MySQL 설치 시 생성한 root 비밀번호를 입력하세요. mysql 프롬프트에서 select User, Host from mysql.user; 명령을 입력하세요. 다음과 같은 내용이 표시되어야 합니다:
+------------------+-----------+ | User | Host | +------------------+-----------+ | mmuser | % | | debian-sys-maint | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+ 5 rows in set (0.00 sec)
사용자가 존재하지 않음
'mmuser'@'%' 가 존재하지 않는 경우, root 권한으로 MySQL에 로그인하여 다음 명령을 실행하여 이 사용자를 생성하세요:
- samp:
create user ‘mmuser’@’%’ identified by ‘{mmuser-password}’;.
사용자를 생성한 후, 이 사용자가 mattermost 데이터베이스에 대한 권한을 가지고 있는지 확인하세요.
사용자가 존재함
mmuser 사용자가 존재하는 경우, /opt/mattermost/config/config.json 파일의 DataSource 요소가 잘못되었을 수 있습니다. 이 파일을 열고 DataSource 를 검색하세요. 그 값은 다음과 같아야 합니다:
"mmuser:*mmuser-password*@tcp(*host-name-or-IP*:3306)/mattermost?charset=utf8mb4,utf8&writeTimeout=30s"
오류를 수정한 경우, /opt/mattermost 디렉토리로 이동하여 sudo -u mattermost bin/mattermost 명령을 실행하여 Mattermost 서버를 다시 시작하세요.
사용자 비밀번호#
mmuser 에 대해 잘못된 비밀번호를 사용하면 Mattermost가 실패합니다. 잘못된 비밀번호는 다음과 같은 오류 메시지를 표시합니다:
[2017/09/20 17:09:10 EDT] [INFO] Pinging SQL master database [2017/09/20 17:09:10 EDT] [ERROR] Failed to ping DB retrying in 10 seconds err-Error 1045: Access denied for user 'mmuser'@'localhost' (using password: YES)
``config.json`` 의 비밀번호
/opt/mattermost/config/config.json 파일의 DataSource 요소는 mmuser 비밀번호를 참조합니다. 이 파일을 열고 DataSource 를 검색하세요. 그 값은 다음과 같아야 합니다:
"mmuser:*mmuser-password*@tcp(*host-name-or-IP*:3306)/mattermost?charset=utf8mb4,utf8&writeTimeout=30s"
비밀번호가 올바른지 확인하세요. 오류를 수정한 경우, /opt/mattermost 디렉토리로 이동하여 sudo -u mattermost bin/mattermost 명령을 실행하여 Mattermost 서버를 다시 시작하세요.
비밀번호 불확실
mmuser 비밀번호가 올바른지 확실하지 않은 경우, mysql -u mmuser -p 명령을 실행하여 mmuser 로 MySQL에 로그인해보세요. 비밀번호를 입력하라는 프롬프트가 표시됩니다. 로그인이 실패하면 올바른 비밀번호를 사용하지 않은 것입니다.
새로운 데이터베이스 설치의 경우, 알 수 없는 비밀번호에 대한 가장 쉬운 해결책은 기존 mmuser 를 제거한 후 해당 사용자를 다시 생성하는 것입니다. MySQL에 root 로 로그인하여 다음 명령을 실행하면 됩니다:
drop user mmuser;flush privileges;- samp:
create user ‘mmuser’@’%’ identified by ‘{mmuser-password}’;
mmuser 를 다시 생성하는 경우, 아래의 mmuser에 권한 부여 섹션의 지침에 따라 이 사용자가 mattermost 데이터베이스에 대한 권한을 가지고 있는지 확인하세요.
사용자 권한 부족#
데이터베이스가 존재하고 사용자 이름과 비밀번호가 올바른 경우에도 mmuser 가 mattermost 데이터베이스에 접근할 수 있는 충분한 권한이 없을 수 있습니다. 이 경우 다음과 같은 오류 메시지가 표시될 수 있습니다:
[2017/09/20 17:20:53 EDT] [INFO] Pinging SQL master database [2017/09/20 17:20:53 EDT] [ERROR] Failed to ping DB retrying in 10 seconds err-Error 1044: Access denied for user 'mmuser'@'%' to database 'mattermost
참고
오류 메시지를 자세히 살펴보세요. 오류 메시지에 표시된 사용자 이름은 /opt/mattermost/config/config.json 파일의 DataSource 요소에 식별된 사용자입니다. 예를 들어, 오류 메시지가 Access denied for user 'muser'@'%' ... 라고 표시되면 config.json 파일에서 사용자를 muser 로 잘못 식별했음을 알 수 있습니다.
mmuser 로 MySQL에 로그인하여 show databases; 명령을 실행하여 mmuser 가 mattermost 데이터베이스에 접근할 수 있는지 확인할 수 있습니다. 이 사용자가 mattermost 데이터베이스를 볼 수 있는 권한이 없으면 출력에서 볼 수 없습니다.
+--------------------+ | Database | +--------------------+ | information_schema | +--------------------+ 1 rows in set (0.00 sec)
mmuser에 권한 부여
mattermost 데이터베이스가 존재하고 mmuser 가 이를 볼 수 없는 경우, MySQL에서 나가서 다시 root로 로그인하세요. grant all privileges on mattermost.* to 'mmuser'@'%'; 명령을 실행하여 mattermost 에 대한 모든 권한을 mmuser 에게 부여하세요.
/opt/mattermost 디렉토리로 이동하여 sudo -u mattermost bin/mattermost 명령을 입력하여 Mattermost 서버를 다시 시작하세요.
서버가 SYSTEM 시간대로 설정됨#
서버가 SYSTEM 시간대로 설정되어 있고 명명된 시간대를 지원하지 않는 경우, MySQL을 사용하는 서버에서 v7.7 이전 버전을 사용하는 Mattermost 고객은 오류가 발생할 수 있습니다. 이러한 오류는 서버의 timezone 테이블을 채워서 해결할 수 있습니다. 시간대 테이블 로드에 대한 자세한 내용은 다음 문서를 참조하세요:
참고
이 문제는 Mattermost v7.8부터 해결되었습니다.
최대 허용 패킷#
Go MySQL 드라이버는 maxAllowedPacket 크기를 4MiB에서 64MiB로 변경했습니다. 이는 MySQL 5.7에서 MySQL 8.0으로 서버 측 기본값 변경과 일관성을 유지하기 위한 것입니다.
max_allowed_packet 설정이 64MiB가 아닌 경우, 서버 측 값과 일치하도록 maxAllowedPacket 매개변수를 추가하여 MySQL 구성 DSN을 업데이트하세요. 또는 성능 오버헤드가 있는 새 연결마다 서버 측 값을 자동으로 가져오도록 0 값을 설정할 수 있습니다.