Ubuntu 16.04에서 MySQL Workbench를 통해 localhost에 연결할 수 없습니다 (암호없는 루트)


17

Oracle 웹 사이트는 15 및 14에서만 작동 함을 의미하는 것 같습니다. http://dev.mysql.com/downloads/workbench/

또한 내 Ubuntu 16.04 컴퓨터 중 두 대도 연결할 수없는 것 같습니다 (루트에 대한 액세스가 거부되었습니다 오류)

그림

괜찮습니다. 괜찮습니다. 그러나 localhost에 연결되지 않습니다.

누구 운이 있니?


소스에서 빌드 했습니까? 정확한 오류는 무엇입니까? 잘못된 비밀번호를 지정할 때와 비슷합니까?

예, 비슷합니다. 그러나 root에는 비밀번호가 없습니다. 그리고 명령 줄의 루트에 올바르게 연결할 수 있습니다. 그리고 두 번 모두 특별인가 및 실행 된 검사 FLUSH PRIVILEGES; 오라클 사이트가 명시 적으로 단지 14과 15을 말한다 있기 때문에, 사람이 16에서 로컬 호스트에 연결할 수 있는지 궁금 해요이 시점에서이
조나단

Oracle이 작동하지 않는다고 주장하는 것을 보지 못했고 Xenial의 바이너리를 보지 못했습니다. 그러나 여기서는 mysql-workbench, packages.ubuntu.com/xenial/mysql-workbench를 참조하십시오 . 이 오류는 소프트웨어 호환성 오류처럼 보이지 않습니다. mysql에서 로깅을 켜고 로깅 레벨을 2로 높이고 로그에 요청이 표시되는지 확인하십시오.

@ bc2946088 mysql-workbench은 16.04 링크를
Videonauth

네 가지 옵션 중 하나를 확인 했습니까? ;-) WB는 나를 위해 완벽하게 작동합니다 (5.7 btw 포함). 아래 증거.
Rinzwind

답변:


27

이 문제는 16.04로 업그레이드하는 동안 암호를 설정하지 않으면 루트 사용자에 대해 소켓 인증이 기본적으로 활성화되어 있기 때문일 수 있습니다. 이 중요한 경고는 16.04 릴리스 노트에 설명되어 있습니다 .

MySQL 루트 비밀번호가 비어있을 때 비밀번호 동작이 변경되었습니다. 패키징은 이제 MySQL 루트 암호가 비어있을 때 소켓 인증을 활성화합니다. 이는 루트가 아닌 사용자가 빈 비밀번호로 MySQL 루트 사용자로 로그인 할 수 없음을 의미합니다.

어떤 이유로 든 16.04와 함께 제공된 MySQL Workbench는 적어도 MySQL 서버에서 기본적으로 작동하지 않습니다. "로컬 소켓 / 파이프"를 사용하여 여러 가지 방법으로 연결했지만 아무 소용이 없었습니다.

해결책은 기본 비밀번호 인증으로 되 돌리는 것입니다. 소켓 인증을 사용하여 MySQL에 로그인하면 다음을 수행 할 수 있습니다.

sudo mysql -u root

로그인 한 후 :

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

기본 (이전 기본값) 비밀번호 인증으로 되돌아갑니다. 문제를 해결하기 위해 다른 방법을 시도한 경우 mysql.user의 "plugin"필드가 "auth_token"으로 설정되어 있는지 확인해야합니다.이 경우 mysqld_safe를 사용하여 MySQL에 로그인해야합니다. 내가했던 것처럼 일을하고 있었어

에 신용 미겔 니에 토의 블로그 게시물 이 솔루션.


놀랍습니다, 나는 이것을 결코 깨닫지 못했을 것입니다.
Jonathan

이 문제는 해결되었지만 다음에 apt 업데이트를 실행할 때 다시 고장났습니다.
Jonathan

적절한 업데이트 출력은 무엇입니까?
Mike M

다음 번에 mysql을 실행할 때까지 눈치 채지 못했기 때문에 보지 못했습니다.
Jonathan

이것이 Ubuntu 16.04 또는 mysql 5.7인지 궁금합니다 (Oracle 또는 Canonical이이 변경을 한 사람입니까?)
Jonathan

22

MySQL 5.7 이상은 "루트"로의 연결을 지원하지 않으므로 mysql-workbench일반 사용자를 생성하고이를 통해 연결해야합니다.

sudo mysql -u root -p

"admin"이라는 사용자를 작성하고이를 사용하여에 연결하십시오 mysql-workbench.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

이 답변은 나에게 완벽했습니다. Jonathan.
크리스 에반스

2
이것은 우분투 18.04에서 작동
tadeubarbosa

완전한. 감사합니다 (18.04.2)
Ron Nuni

4

이 질문은 2 살 일 수 있지만 오늘 밤 mysql-workbench 작업은 저에게 답을 준 것으로 보입니다.

루트 사용자는 이제 기본적으로 auth_socket 인증을 사용합니다. root가 액세스 할 수있는 유일한 방법은 root로 로그인하는 것입니다.

mysql -u root루트 사용자와 표준 사용자로 실행 하여이 사실을 알았습니다 .

표준 사용자에서는 작동하지 않습니다.

그래서 내 다음 질문은-mysql-workbench가 어떤 사용자로 실행되는지였습니다. 기본적으로 표준 사용자로 실행됩니다. 루트 사용자로 실행하려면 루트에서 실행해야합니다. 그래서 루트 사용자 CLI로 들어가서 'mysql-workbench'를 입력하십시오.

그런 다음 여기에 표시된대로 루트 사용자의 설정으로 이동해야했습니다. 파일 위치는 우분투 18.04 설치에 유효합니다.

루트 연결 설정 mysql-workbench.

해당 소켓 위치가 유효하지 않으면 루트 또는 sudo에서 mysql CLI로 이동하여 다음 명령을 실행해야합니다.

소켓을 찾는 MySQL CLI 명령.

설정이 올 바르면 연결을 테스트하십시오. 성공하면 갈 준비가 된 것입니다.


감사합니다! 이전 도구를 지원하기 위해 보안 관련 인증 변경 사항을 되돌릴 필요가 없습니다. 새로운 방법을 사용하여 해당 도구에 연결하도록 지시 할 수 있습니다.
Aaron

이 방법으로 로컬 연결을 수행합니까? TCP / IP를 통해 연결할 수없는 이유를 모르겠습니다.
john gonidelis

2

나에게 잘 작동하고 특별한 것은 없었습니다. mysql-server-5.7명령 행에서 설치 및 워크 벤치를 설치 하고 비밀번호로 사용자를 설정하고 일반 데이터베이스 권한을 설정하십시오 (일반적인 방법으로도).

여기에 이미지 설명을 입력하십시오

그리고 데이터베이스와 테이블로 :

여기에 이미지 설명을 입력하십시오


흥미 롭군 discworld 참조를 좋아하십시오. mysql 패키지를 재구성 할 때 비밀번호를 변경하라는 프롬프트가 표시되지 않습니다. 당신 은요? 설치가 잘못되었거나 충돌이 있다고 생각하고 있습니다. 루트 암호를 변경하라는 메시지가 표시되어야한다고 생각합니다.
조나단

1

auth_socket 플러그인을 사용하여 mysql 워크 벤치를 통해 연결할 수있는 적절한 관리 권한으로 사용자 계정을 만듭니다. 이것은 mysql 서버로의 루트 연결에는 적용되지 않는다는 점에 유의하십시오 .

터미널 세션에서 mysql에 로그온하십시오.

$sudo mysql

이 작업을 수행 할 수 있으면 auth_socket 플러그인이 활성화되고이 플러그인을 사용하여 루트 계정이 인증됩니다. 보안 설치 스크립트를 실행 한 후 우분투에 mysql을 설치할 때의 기본 설정입니다.

먼저 계정 'valerie'에 대한 mysql 사용자를 작성하십시오.

mysql> CREATE USER 'valerie'@'localhost' IDENTIFIED WITH auth_socket;

계정에 대한 관리 권한을 활성화하십시오.

mysql> GRANT ALL PRIVILEGES ON *.* TO 'valerie'@'localhost' WITH GRANT OPTION;

쉘을 종료하십시오.

mysql> exit

그런 다음 mysql workbench에서 :

  1. 새로운 연결 만들기
  2. 연결 방법을 로컬 소켓 / 파이프로 선택하십시오.
  3. 님의 소켓 / 파이프 경로 설정 /var/run/mysqld/mysqld.sock을 (이것은 데비안 / 우분투 시스템과 리눅스의 다른 맛의 변경 사항에 대한 경로가 있습니다)
  4. 사용자 이름을 설정하십시오 (이 예에서는 'valerie')

그런 다음이 연결로 mysql 서버에 연결할 수 있어야합니다.


0

이 시도

MySQL 데이터베이스를 선택하십시오

1 : mysql을 사용하십시오.

2 : UPDATE 사용자 설정 plugin = 'mysql_native_password'여기서 User = 'root';

3 : 플러시 권한;

4 : 종료;

~ $ sudo 서비스 mysql 재시작


0

Ubuntu 16.04를 실행하는 AWS 호스트의 MySQL 서버; 우분투 16.04 노트북의 mysql-workbench; KeyPair 연결을 사용합니다.

테스트 DB 연결을 설정 한 후 작동했습니다. 그러나 실제 연결은 Jonathan Leaders가 게시 한 것과 같은 메시지로 항상 실패했습니다. 로그를 확인하고 "permission denied" 메시지 ~/.mysql/workbench/log가 몇 개 발견되었습니다 .

이제 mysql-workbench를 사용할 수 있습니다. sudo mysql-workbench

그리고 나중에 갈 수 chmod있고 디렉토리에 권한이 필요합니다.


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