phpmyadmin을 루트로 입력 할 수 없습니다 (MySQL 5.7)


66

우분투 데스크톱 16.04 (15.10에서 업그레이드)를 사용하고 있습니다.

에서 phpmyadmin을 설치했습니다 apt-get install phpmyadmin. 내가 가면 작동 localhost/phpmyadmin하지만 루트로 로그인 할 수 없습니다.

나는 그것을 많이 찾았습니다. /etc/phpmyadmin/config.inc.php사용자와 비밀번호를 'root'및 ''(비밀번호 로 변경)로 변경 하고 바꾸 라고 제안하는 많은 출처를 발견했습니다 . 그러나 나는 config.inc.php그들과 다릅니다. 예를 들어 내 파일에는 사용자 및 암호 줄이 없으며 다른 파일에서 자동으로 가져 오는 것 같습니다 /etc/phpmyadmin/config-db.php. 그럼에도 불구하고 해당 파일의 사용자 및 비밀번호를 변경했지만 이제이 오류가 발생합니다.

#1698 - Access denied for user 'root'@'localhost'

내가해야 할 일?


Phpmyadmin 버전 : 4.5.4.1deb2ubuntu1
mysql Ver 14.14 Distrib 5.7.12, EditLine 랩퍼를 사용하는 Linux (x86_64) 용


어떤 MySQL 버전입니까?
Rael Gugelmin Cunha

질문이 업데이트되었습니다
Mostafa Ahangarha

간단한 방법 /etc/mysql/debian.cnf 에서 로그인 경로 를검색합니다 -Ubuntu 16.04
cl-r

답변:


127

MySQL 5.7은 보안 모델을 변경했습니다. 이제 MySQL root로그인에는 sudo.

즉, phpMyAdmin은 자격 증명 을 사용할 수 없습니다root .

가장 간단하고 안전하며 영구적 인 솔루션은 새로운 사용자를 만들고 필요한 권한을 부여하는 것입니다.

1. mysql에 연결

sudo mysql --user=root mysql

2. 실제 비밀번호 생성

아래 단계에서는 some_pass샘플 비밀번호로 사용하겠습니다 . 암호로 교체하십시오! SOME_PASS비밀번호로 사용하지 마십시오 !

3. phpMyAdmin에 대한 사용자를 만듭니다

다음 명령을 실행하십시오 ( some_pass원하는 비밀번호로 대체 ).

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

phpMyAdmin이 localhost에 연결되어 있다면 이것으로 충분합니다.

4. 옵션 및 안전하지 않은 : 원격 연결 허용

기억하십시오 : 원격 사용자가 모든 권한을 갖도록 허용하는 것은 보안상의 문제이며 대부분의 경우 필요 하지 않습니다 .

이를 염두에두고 원격 연결 중에이 사용자가 동일한 권한을 갖도록하려면 추가로 실행하십시오 ( some_pass2 단계에서 사용한 비밀번호로 대체 ).

CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

5. phpMyAdmin 업데이트

를 사용 하여 다음 섹션에서 파일 업데이트 사용자 / 암호 값을 sudo편집 /etc/dbconfig-common/phpmyadmin.conf하십시오 ( some_pass2 단계에서 사용한 암호로 대체 ).

# dbc_dbuser: database user
#       the name of the user who we will use to connect to the database.
dbc_dbuser='phpmyadmin'

# dbc_dbpass: database user password
#       the password to use with the above username when connecting
#       to a database, if one is required
dbc_dbpass='some_pass'

2
조사하겠습니다. 그 동안의 해결 방법으로 새 ​​사용자를 추가하고 모든 권한을 부여한 다음 phpmyadmin 구성 파일에 추가 할 수 있습니다.
Rael Gugelmin Cunha

9
MySQL은 업그레이드 후에도 계속 문제를 일으킨다는 것을 좋아합니다. 행복하게 내 워크 벤치에서 루트를 사용하고 있었고 이제 유일한 해결책은 명령 행에서 "mysql"을 스 도우하고, 새로운 사용자를 생성하고, 동일한 권한을 모두 부여하고 워크 벤치에서 사용하는 것입니다. 바보.
Andris

3
@MostafaAhangarha 조사 후 빈 암호가 허용되지만 root사용자는 항상 sudo5.7 의 사용법이 필요 하다는 것을 알았습니다 . 그래서 모든 권한을 가진 새로운 사용자를 만들 수 있도록 답변을 업데이트했습니다.
Rael Gugelmin Cunha

3
@Andris 이렇게하면 사람들이 MySQL을보다 안전한 방식으로 사용하게됩니다. 어쨌든 데이터베이스의 루트 사용자가 비밀번호없이 로그인하도록하는 것은 좋은 생각이 아닙니다. 로컬 개발 시스템에서는 문제가 없지만 서버에서는 매우 위험합니다.
Dan

2
@ Dan-그것은 가장 큰 문제입니다-경고없이 Ubuntu 16.04로 업그레이드 한 후 로컬 개발 환경이 무너졌습니다. 나는 이것이 새로운 설치의 기본값이라는 것을 신경 쓰지 않지만 적어도 업데이트를 설치하기 전에 요청할 수 있습니다.
Andris

10

phpmyadmin (Ubuntu 16.04LTS)과 함께 mariaDB를 사용할 때도 같은 문제에 직면했습니다.

전제 조건 :

1) MariaDB 설치

sudo apt-get -y install mariadb-server mariadb-client
sudo mysql_secure_installation (answer to some interactive questions):
    Enter current password for root (enter for none): <enter>
    Set root password: n
    Remove anonymous users: n
    Disallow root login remotely: n
    Remove test database and access to it: n
    Reload privilege tables now: Y

제거하려는 경우 mariaDB:

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

2) phpmyadmin 설치

sudo apt-get -y install phpmyadmin (and answer some interactive questions)
    Configuring phpmyadmin:
        Web server to reconfigure automatically: apache2
        Configure database for phpmyadmin with dbconfig-common: Yes
        MySQL application password for phpmyadmin: <blank>

3) apache2에서 phpmyadmin에 대한 심볼릭 링크를 만듭니다

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin.conf
sudo service apache2 restart

좋아, 당신이 라엘의 지침을 따르는 경우에, 지금, 당신은에 로그인 할 수 있습니다 phpmyadmin:하지만, 나를 위해 적어도, 나는 빨간색 메시지가 등장하면서, 새로운 데이터베이스를 생성 할 수 없습니다 No privileges(또는 유사한 메시지)

수정은 phpmyadmin을 재구성하고 일부 대화식 질문에 대한 답변으로 이루어졌습니다.

sudo dpkg-reconfigure phpmyadmin
<Ok>
Reinstall database for phpmyadmin: <Yes>
Connection method for MySQL database server for phpmyadmin: TCP/IP
Host name of the MySQL database server for phpmyadmin: localhost
Port number for the MySQL service: 3306
MySQL database name for phpmyadmin: phpmyadmin
<Ok>
MySQL username for phpmyadmin: root
MySQL application password for phpmyadmin: pass  # OR ANY PASSWORD YOU WANT
Password confirmation: pass
Name of the database's administrative user: root
Web server to reconfigure automatically: apache2
An error occurred while installing the database: ignore

이제 phpmyadmin ( localhost/phpmyadmin)에 연결하려고 하면

username: root
password: pass

데이터베이스를 만들 수 있습니다.


1
답변 주셔서 감사합니다. 그러나 전체 대신 마지막 부분을 공유하는 것이 낫지 않습니까? 나머지는 여기서 유용하지 않다고 생각합니까?
Mostafa Ahangarha

@MostafaAhangarha 어쩌면 게시물이 너무 길지만 항상 답변이 제공되는 컨텍스트를 알고 싶습니다.
Dan Costinel

running sudo dpkg-reconfigure phpmyadmin 은 mariadb 설치 및 mysql unistalling mysql과 연결되어 있습니까? 그렇다면 귀하의 정보가 유용 할 수 있습니다 (사용중인 DB 인 mysql 제거를 제안하고 있기 때문일 수 있습니다). 그렇지 않다면, 그것을 문맥으로 제시 할 필요가 없습니다. 내가 틀렸다면, 나를 바르게 만드십시오.
Mostafa Ahangarha

2
나는 재구성을 따랐으며 이제는 작동합니다.
cwhisperer

루트 계정에 비밀번호가없는 것이 좋은 생각입니까?
kurdtpage

6

Mysql 5.7 용 Ubuntu 16.04에서 아래 표 정보를 확인하고 필요한 설정을 수행하십시오.

mysql>  SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
| phpmyadmin       | localhost | mysql_native_password |
| root             | %         | mysql_native_password |
+------------------+-----------+-----------------------+

root에 auth_socket 플러그인이 있는지 확인한 후 아래 명령을 실행하십시오.

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

다음 MySQL apt업데이트 까지 작동합니다 . 즉, 우분투에서 모든 MySQL 업데이트 후에 이것을 적용해야합니다.
Rael Gugelmin Cunha

6

phpymadmin이 연결할 수없는 경우 인증 메커니즘이로 설정되어있을 수 있습니다 auth_socket. 다음과 같은 일반 비밀번호를 사용하도록 변경할 수 있습니다.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_password';

우분투 18.04를 새로 설치하면 지금이 문제로 고심하고 있었고 이것이 작동하게되었습니다. 여기에 더 많은 것을 설명하는 적절한 기사가 있습니다.

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


3

완벽을 기하기 위해 MariadB 버전 10.1.23을 사용하는 데 어려움을 겪는 해결책을 찾았습니다. 새 사용자를 설정하는 데 사용할 구문은 @Rael Gugelmin Cunha의 위 게시물에보고 된 것과 유사합니다. 여기에는 동일한 문제에 직면 한 다른 사람들을 참조하기위한 솔루션이 있습니다.

root@raspberrypi:# sudo mysql --user=root mysql
use mysql;
CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_password';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

문안 인사


1
Ask Ubuntu에 오신 것을 환영합니다! Ubuntu는 Ubuntu 전용이므로 Raspbian (Debian 기반)에 대한 답변을 게시하지 마십시오.
fosslinux

2
@ubashu이 솔루션은 Raspbian 전용이 아니며 MariaDB 전용입니다.
토마스 워드

감사! 그래도 새 데이터베이스를 만들 수있는 옵션은 없습니다.
danger89

2

나는 같은 문제가 있었고, 나는 대부분의 조언을 따랐으며 그 어느 것도 나를 위해 일하지 않았다! 브라우저에서 http : // localhost / phpmyadmin 을 열 때 로그인 세부 정보를 요청 했을 때와 같은 문제가 발생 했습니다.

root 를 사용자 로 사용 하고 있었고 알고있는 비밀번호가 정확했습니다. 그리고 나는 얻고 있었다

# 1698-사용자 'root'@ 'localhost'에 대한 액세스가 거부되었습니다.

알려진 비밀번호 phpmyadmin로 사용자가 아닌 사용자 로 사용 하면 root됩니다.


3
사용자 이름이 "phpmyadmin"이어야합니까?
Mostafa Ahangarha 2016 년

1
네 그것은 나를 위해 일했다
plutesci

그리고 튜토리얼을 따라 간 암호는 "some_pass"haha였습니다. 감사!
Marcelo Ágil

@ MarceloÁgil 위의 답변에 사람들에게 some_pass실제 비밀번호 로 교체하도록 요청하는 몇 가지 경고가 있습니다!
Rael Gugelmin Cunha

1

Rael Cunha를 언급 :

그렇습니다. 그의 해결책은 효과가 있으며 다른 사람들을 시도했습니다. 그러나 구성 파일에 비밀번호가 노출 된 사용자를 언급하는 /etc/dbconfig-common/phpmyadmin.conf것은 시스템 차원의 조치에 대한 보안 결함 처럼 보입니다.

그래서 나는 오히려 MariaDB 10.1.x우려 하는 것을 제안하고 싶습니다 (some_user와 some_pass는 당신이 생각해 낼 수있는 것입니다) :

# mysql -u root
use mysql;
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON \*.\* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

phpadmin 설정 (4)를 그대로 둡니다.

나중에 자신의 자격 증명으로 phpmyadmin에 로그인하십시오.

내 설정에서 위의 '%'를 보안상의 이유로 'localhost'로 바꾸지 만 서버에서 포트 3306을 닫은 경우 반드시 보안 위험이있는 것은 아닙니다.


0

아래 코드 만 우분투 18.04, PHP 7 및 mysql 5.7에서 작동합니다.

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

'phpmyadmin'을 바꾸지 마십시오. 다른 사용자를 만들면 새 사용자 만들기와 같은 전체 권한이 없으며 해당 사용자에게 데이터베이스 권한을 할당하십시오. phpmyadmin 사용자 만 전체 액세스 권한을 갖습니다.


-2

MySQL을 별도로 설치하는 경우 sudo / opt / lampp / lampp stop 서비스 아래 의이 명령으로 중지하십시오 .mysql stop sudo / opt / lampp / lampp start

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.