MacOSX homebrew mysql 루트 비밀번호


116

어떤 이유로 MySQL은 루트에 대한 액세스 권한을 중지했습니다. Homebrew를 제거하고 다시 설치했습니다. 새로 설치, 새 테이블하지만 내가 들어갈 때

mysql -u root -p

이 오류가 발생합니다.

사용자 'root'@ 'localhost'에 대한 액세스 거부 (암호 사용 : NO)

MySQL을 다섯 번 다시 설치했지만 여전히 암호를 요구합니다. 이 문제를 어떻게 해결합니까?


수퍼 유저에게는 거의 정확한 질문이 있습니다. 다음 단계에 따라 superuser.com/a/400345
이카루스

13
그냥 실행 mysql_secure_installation하고 질문에 대답은 단순 질문
Abhinav 싱

8
mysql_secure_installation 명령은 루트 암호를 입력하라는 메시지를 표시합니다. 설정하고 잊어 버린 경우이 절차는 도움이되지 않습니다.
JohnG 2015

1
brew가 MySQL 5.7을 설치 한 경우 다음 단계를 따르십시오. stackoverflow.com/a/33924648/133106
mrucci

FWIW가 mysql -u root여기에서 일했습니다 ...
rogerdpack 2016

답변:


115

다음 명령을 실행 NEWPASS하십시오 (비밀번호는 어디에 있습니까 ).

$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS

나는 같은 오류가 있었고 이런 식으로 수정했습니다.


16
나를 위해 일했습니다. 분명히 (아마도) 달러 기호 ($)는 명령의 일부로 입력해야합니다 (단순한 쉘 프롬프트가 아닙니다).
hobs

3
쉘의 히스토리 파일에 저장하지 않도록 명령에 NEWPASS를 포함하지 않는 것이 좋습니다. 이 명령은 패스없이 실행하면 자동으로 입력을 요청하므로 그럴 이유가 없습니다. :)
Levi Figueira 2014

4
mariadb를 사용하는 경우 :$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
bryceadams

8
나를 위해 작동하지 않습니다. '
trainoasis

3
mariadb의 경우 사용자에 대한 액세스가 거부 된 경우 :sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
upful

110

이것들 중 어느 것도 나를 위해 일하지 않았습니다. 나는 이미 내 컴퓨터 어딘가에 mysql을 가지고 있다고 생각하여 거기에 암호가 설정되어 있습니다. 모든 솔루션을 시도하는 데 몇 시간을 소비 한 후 이것이 저에게 효과적이었습니다.

$ brew services stop mysql
$ pkill mysqld
$ rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -uroot

@Ghrua에 대한 모든 크레딧


6
이전 게시물은 나를 위해 작동하지 않았지만 파괴적인 작업이 훌륭했습니다.
Clay

1
결국 mysql에 로그인하면를 사용 ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';하여 새 루트 암호를 설정하십시오.
Martin Braun

이것은 기존 데이터베이스를 삭제하지 않고 나를 위해 일한
Mwirabua 팀에게

마지막으로 적절한 작업 솔루션입니다. @ 2020 MacOs 카탈리나.
Mindaugas Kurlys

이전 솔루션이 그렇지 않을 때 이것은 나를 위해 일했습니다. 감사합니다!
Les Brown

65

실수로 루트 암호를 설정하고 잊어 버린 경우, 게으르고 백업 솔루션이있는 것을 잊었 기 때문에 모든 데이터베이스를 지우고 다시 시작하고 싶지 않으며 상당히 최근의 Homebrew 설치를 사용하고있는 경우 (Winter 2013), 다음은 MySQL의 비밀번호를 재설정하는 단계입니다.

현재 실행중인 MySQL 인스턴스 중지

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

이제 그랜트 테이블과 네트워킹을 건너 뛰고 mysql을 시작하십시오.

$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking

echo $ (brew --prefix mysql) 을 실행할 때 bash에서 "/ usr / local / opt / mysql" 로 응답하지 않으면 그에 따라 경로를 조정해야합니다.

이 작업을 완료하면 이제 실행중인 보호되지 않은 MySQL 인스턴스가 실행됩니다.

로그인하고 비밀번호를 설정하십시오.

mysql -u root

프롬프트에서 다음 MySQL 명령을 입력하여 영향을받는 사용자의 새 비밀번호를 설정합니다.

mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';

모든 것이 계획대로된다면 다음과 같이 말해야합니다.

Query OK, 1 row affected (0.02 sec)
Rows matched: 4  Changed: 1  Warnings: 0

MySQL 프롬프트를 종료합니다.

mysql> exit
Bye

서버 중지 :

mysqladmin -u root shutdown

이제 시작 데몬을 되돌려 서 MySQL을 다시 준비해 보겠습니다.

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

축하합니다. mysql 루트 비밀번호를 재설정했습니다. 커피를 따르고 백업 솔루션을 확보하십시오!


5
암호를 변경 한 후 보호되지 않은 MySQL 서버를 중지하려면 다음mysqladmin -u root shutdown
Vebjorn Ljosa

9
방금이 문제가 발생했고이 답변이 가장 가까운 것으로 나타났습니다. passwordmysql 5.7.9에서 유효한 열이 아니라는 것을 알았습니다 . 대신 나는 대신 사용해야 authentication_string했다. 나머지 지침은 완벽하게 작동했습니다. 감사!
M. Scott Ford

5
M. Scott Ford가 말했듯이 적절한 명령은 다음과 같습니다.update user set authentication_string=password('new_password_here') where user='root';
Panayotis

3
나는 update mysql.user set authentication_string=password('none') where user='root';그것이 작동 하기 위해 달려야 했다. (오른쪽 저 위의 코멘트,하지만 앞에 추가처럼 mysql.user.)
스티브 마이스너

2
mysql 8.0.11부터 암호 기능이 제거되었습니다. 자세한 사항
chancyWu

62

며칠 전에 같은 문제가 발생했습니다. 데몬을 시작 하기 전에을 mysql통해 설치 homebrew하고 초기화 스크립트 ( mysql_install_db) 실행할 때 발생합니다 mysql.

이를 수정하려면 mysql데이터 파일을 삭제 하고 서비스를 다시 시작한 다음 초기화 스크립트 실행하면됩니다.

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm -r /usr/local/var/mysql/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

나를 위해 완벽하게 작동했습니다. 다른 솔루션은 내가 찾고 있어요 정말 무엇 때문에 사실, 내 로컬 컴퓨터에 대한 암호를 설정하지 않으
브래드

3
mysql_install_db가이되지 않습니다, 사용을 고려mysqld --initialize
브라이언

1
난 그냥 얻을 No such file or directory나는 첫 번째 명령을 실행할 때.
에이전트 얼룩말

1
mysqld --initialize 명령을 실행하면 콘솔의 로그 메시지에서 루트 사용자의 임시 비밀번호를 설정했음을 알 수 있습니다.이를 복사하고 다음 번에 "mysql -uroot -p"명령을 실행할 때 비밀번호를 사용합니다.-확실히 작동합니다. . 다음 MySQL은 암호를 재설정하도록 요청합니다 .. 교체 아웃이를 확인 dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Vikrant Labde

@VikrantLabde "확실히 작동합니다"-매우 야심 찬 성명. 나는 이것을 시도하고 그것이 나에게 준 임시 암호를 사용했지만 여전히 액세스 권한을 부여하지 않았습니다. 백 슬래시로 구두점을 이스케이프해야 했습니까?
Max Goodridge

47

home brew를 통해 mysql을 설치 한 후이 오류가 발생했습니다.

따라서 먼저 설치를 제거하십시오. 그런 다음 Homebrew를 통해 다시 설치하십시오.

brew update
brew doctor
brew install mysql

그런 다음 mysql 서비스를 다시 시작하십시오.

 mysql.server restart

그런 다음이 명령을 실행하여 새 루트 암호를 설정하십시오.

 mysql_secure_installation

마지막으로 권한을 다시로드하라는 메시지가 표시됩니다. 네 라고 말하다. 그런 다음 mysql에 다시 로그인하십시오. 그리고 설정 한 새 비밀번호를 사용하십시오.

mysql -u root -p

1
이것은 완벽한 솔루션입니다. 나는 이미 달리기를 시도 mysql_secure_installation했지만 핵심 부분은mysql.server restart
Johan

mysql_secure_installation이 핵심이었습니다
Nik

nirojan 말한다처럼 두통을 피하기 위해 ... 그냥 다시 시작 명령을 사용하여 다음 실행 mysql_secure_installation을 입력
댄 Zuzevich에게

13

실행하면

brew install mariadb
...
brew services start mariadb
==> Successfully started `mariadb` (label: homebrew.mxcl.mariadb)

 $(brew --prefix mariadb)/bin/mysqladmin -u root password newpass
/usr/local/opt/mariadb/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''

루트 계정으로 로그인도 실패합니다.

mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

그러면 기본 관리자 사용자가 MacOS 계정 사용자 이름과 동일한 이름 ( 예 : johnsmit)이 생성 됩니다.

루트로 로그인하려면 다음을 실행하십시오.

mariadb -u johnsmit
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.4.11-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit
Bye

MacOS 계정 이름이 저를 위해 해냈습니다.
Dan

macOS 계정 이름 사용자의 암호를 추가 할 수 있습니까?
OrigamiEye


4

여기에서 대부분의 답변에 공통적 인 것을 발견하고 새로 설치 한 것을 확인했습니다. .NET mysqladmin -u root없이 실행하기위한 권장 사항을 보면 실제로 분명합니다 -p.

비밀번호가 없습니다.

Brew는 루트 사용자와 암호없이 mysql을 설정합니다. 이것은 의미가 있지만 설치 후 경고에는 전혀 언급하지 않습니다.


2
루트 암호가 없다고 가정하여 액세스 거부 문제가 있었으므로 문제가 분명하다고 생각하지 않습니다.
Jack Frost

나는 문제가 명백하다고 말하는 것이 아니다. 정상적인 상황에서 MySQL을 사용한 사람에게는 완전히 혼란 스럽습니다. 그러나 다른 응답을 보면 그 이유는 분명합니다.
Spyder

3

함께 시도 sudo"액세스 거부"오류를 방지하기 위해 :

sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS


3

질문은 오래 전에 질문 / 답변했기 때문에 그 상위 답변은 저에게 적합하지 않습니다. 내 솔루션은 2020 년입니다.

배경 : homebrew에서 새로 설치 한 mysql / mariadb.

문제 : 루트의 암호가 비어 있지 않고 알 수 없습니다.

수정 사항 :

  1. mysql -u 시스템 사용자 이름 -p
  2. 비밀번호가 비어 있습니다 (Enter 누르기)
  3. ALTER USER 'root'@ 'localhost'는 'NEW-ROOT-PASSWORD'로 식별됩니다.
  4. FLUSH 특권;

이유 :

  1. Homebrew는 현재 MacOS 사용자 이름으로 명명 된 루트 권한을 가진 사용자를 만듭니다.
  2. 암호가 없습니다
  3. 모든 권한이 있으므로 해당 사용자로 루트 암호를 재설정하십시오.
  4. 루트의 초기 비밀번호는 무작위로 생성되었습니다.

2020 년 정답. MacOS 사용자 이름에 대한 암호를 물어볼 수 없습니다
OrigamiEye

2
  1. 애플 아이콘-> 시스템 환경 설정으로 이동하십시오.
  2. MySQL 열기
  3. 인스턴스에서 "데이터베이스 초기화"가 표시됩니다.
  4. 그것을 클릭하십시오
  5. 루트에 대한 암호를 설정하라는 메시지가 표시됩니다-> 거기에 강력한 암호를 설정하십시오
  6. 이 비밀번호를 사용하여 다음에 mysql에 로그인하십시오.

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


간단하고 쉬운 방법. 감사.
Ezequiel França

1

터미널에서이 라인을 실행하는 것은 저와 같은 문제를 겪고있는 여러 다른 사람들에게 트릭을 제공했습니다. 이 지침은 brew가 mysql을 성공적으로 설치 한 후 터미널에 나열됩니다.

mkdir -p ~/Library/LaunchAgents

cp /usr/local/Cellar/mysql/5.5.25a/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

/usr/local/Cellar/mysql/5.5.25a/bin/mysqladmin -u root password 'YOURPASSWORD'

YOURPASSWORD루트의 암호는 어디에 있습니까 ?


난 그냥 얻을 No such file or directory내가이 명령을 실행할 때
에이전트 얼룩말

1

homedir에 .my.cnf가 숨겨져 있지 않은지 확인하십시오. 그게 내 문제였습니다.


1

이것은 MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx 에서 저에게 효과적이었습니다.

실행하여 mysql 시작

양조 서비스는 mysql을 시작합니다

설치 스크립트 실행

mysql_secure_installation

설정 VALIDATE PASSWORD 플러그인을 설정하라는 메시지가 표시됩니다. 이를 수행하려면 y를 입력하십시오.

필요한 암호 유효성 검사를 선택합니다 (데이터베이스를 사용하는 것이 실제로 중요하지 않음).

이제 나머지 모든 옵션에 대해 y를 선택합니다. Remove anon. 사용자; 원격 루트 로그인을 허용하지 않습니다. 테스트 데이터베이스 제거; 권한 테이블을 다시로드하십시오. 이제 다음 메시지를 받아야합니다.

All done!



1

이것은 나를 위해 일했습니다. 바라건대 이것은 당신에게도 효과가 있습니다 !!! 그들을 따라가.

brew services stop mysql
pkill mysqld
# NB: the following command will REMOVE all your databases!
# Make sure you have backups or SQL dumps if you have important data in them already.
rm -rf /usr/local/var/mysql/
brew services restart mysql

mysql -uroot
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

mysql -u root 
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password 
BY'YOUR_PASS_WORD!!!!';

2
rm -rf /usr/local/var/mysql/명령을 실행 하면 컴퓨터의 모든 데이터베이스와 Mysql 데이터가 삭제 된다는 점을 경고 해야합니다!
Lashae 2019

0

brew를 통해 mysql을 설치할 때 기본 암호는 root입니다.

mysql -uroot -proot


1
From brew info mysql: 루트 비밀번호없이 MySQL 데이터베이스를 설치했습니다. 보안을 위해 다음을 실행하십시오 : mysql_secure_installation
ssc

@ssc 새로 설치할 때 암호를 설정하는 가장 좋은 방법입니다.
alexventuraio

0

터미널 1:

$ mysql_safe

터미널 2:

$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

이것은 답변이 게시되었을 때 효과가 있었지만 그 동안 중단되었습니다. (현재) MySQL 버전 5.7.21에서는 '필드 목록'의 '알 수없는 열'암호 '로 실패합니다.
ssc

업데이트 mysql.user SET authentication_string = PASSWORD ( 'xxxxxx!') WHERE User = 'root';
kevinc

0

mysql_secure_installation나는 Catalina를 사용 하고이 명령을 사용 하고 이제 나를 위해 작동합니다.

$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): << enter root here >>

나는 root현재 비밀번호로 입력 한다

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

나머지는


0

그래서 누군가가 내가 가진 것과 같은 상황과 구성을 가지고 있고 또한 미쳐 가려고 할 경우-이것은 나를 위해 일했습니다 .

긴 이야기 후 나는 그 과정을 죽였을 때 다시 시작 자동으로 유지 양조 설치 MariaDB를했다 (이 일을 양조의했다) 이 있었다 나는 않은 루트 암호, 하지 알고 있습니다.

$ brew services list

다음과 같은 내용이 표시됩니다.

mariadb started jdoe /path/to/homebrew.mxcl.mariadb.plist

다음을 사용하여 MySQL 서버를 중지합니다.

$ brew services stop mariadb

그런 다음 루트 사용자 없이 다시 시작합니다 (brew를 사용하지 않음).

$ mariadbd --skip-grant-tables &

여기서는으로 mysql_secure_installation인해 --skip-grant-tables작동하지 --skip-grant-tables않았으며 암호가 필요했기 때문에 (내가 가지고 있지 않은) 작동하지 않습니다.
시도 $(brew --prefix mysql)/bin/mysqladmin -u root password hunter2는 이상한 오류 만 반환하고 아무것도하지 않았습니다. $(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2또한 작동하지 않았고, 다른 오류와 나에게 작동하지 않는 제안을 제공했습니다.

하지만 이제 자격 증명없이 mysql에 로그인 할 수 있습니다 .$ mysql

여기서는 "열 '암호'를 업데이트 할 수 없습니다"때문에 루트에 대한 사용자 테이블을 업데이트하는 이전 방법이 작동하지 않습니다.
새로운 방법의 사용 alter user만 작동 작업을 완료 한 flush privileges;그래서 첫 번째 않습니다.
그런 다음 :
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
( MariaDB [(none)]>여기서 MySQL 프롬프트)
그런 다음 flush privileges;다시 수행 하십시오.
MySQL 클라이언트를 종료합니다.

이제 양조에 관한 한 MariaDB는 여전히 실행 중이 아니므로 $ ps aux | grep -i mariadbpid를 찾는 데 사용 $ kill -9 <pid>하십시오.
그런 다음을 사용 $ brew services start mariadb하여 다시 시작하십시오.


-1

init 파일을 사용하여 mysql을 시작하여 루트 암호를 변경하십시오.

brew services stop mysql
pkill mysqld
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newRootPass';" > /tmp/mysql-init
$(brew --prefix mysql)/bin/mysqld --init-file=/tmp/mysql-init

이제 루트 암호가 변경되었습니다. 암호 변경을 저장하려면 서버를 올바르게 종료 하십시오 . 새 터미널 창에서 실행

mysqladmin -u root -p shutdown

새 패스를 입력하십시오.

서비스를 시작하고 init 파일을 제거하십시오.

brew services start mysql
rm /tmp/mysql-init

mysql 버전 8.0.19에서 테스트되었습니다.

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