오늘은 Ubuntu 14.04.1 LTS ll에 루트로 로그인했습니다.
그런 다음 apt-get install mariadb-server
(sudo없이 루트로).
와 mySQL -h localhost -u root --password=<PW>
내가 가진
사용자 ‘root’@ ‘localhost’에 대한 액세스가 거부되었습니다 (암호 사용 : YES).
로 mySQL -u root -p
나는 DB에 로그인했다
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<PW>';
FLUSH ALL PRIVILEGES;
그러나 이것은 도움이되지 않았습니다. 어떤 아이디어가 있습니까? 비슷한 질문에 대한 답을 찾지 못했습니다.
답변
TL; DR은 : 새로운 설치 한 후 루트 사용자로 후 mysql을 / mariadb의 액세스 최신 버전에, 당신이 루트 쉘에 있어야합니다 (즉 sudo mysql -u root
, 나 mysql -u root
에 의해 시작 쉘 내부 su -
또는 sudo -i
첫번째)
동일한 업그레이드를 방금 수행 한 Ubuntu에서 동일한 문제가 발생했습니다.
이상했던 것은
sudo /usr/bin/mysql_secure_installation
내 비밀번호를 수락하고 설정할 수 있지만 클라이언트 를 root
통해 로그인 할 수 없습니다.mysql
나는 mariadb를 시작해야했다
sudo mysqld_safe --skip-grant-tables
다른 모든 사용자는 여전히 정상적으로 액세스 할 수 있지만 루트로 액세스 할 수 있습니다.
mysql.user
테이블을 보면 루트에 대해 plugin
열이 설정된 unix_socket
반면 다른 모든 사용자는 ‘mysql_native_password’로 설정되어 있음을 알았습니다. 이 페이지를 간략히 살펴보십시오 : https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ 은 Unix 소켓 uid
이 클라이언트를 실행하는 프로세스를 사용자의 프로세스와 일치 시켜 로그인을 가능하게한다고 설명합니다 . mysql.user
표. 즉 root
, 루트로 로그인해야하므로 mariadb에 액세스 합니다.
인증이 필요한 mariadb 데몬을 충분히 다시 시작하면 다음을 사용하여 루트로 로그인 할 수 있습니다.
sudo mysql -u root -p
또는
sudo su -
mysql -u root -p
이 작업을 수행 한 후 sudo를 수행하지 않고 액세스하는 방법에 대해 생각했습니다. 이는 mysql 쿼리를 실행하는 문제입니다.
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
( <password>
원하는 mysql 루트 비밀번호로 대체 ). 이것은 루트 사용자에 대한 암호 로그인을 활성화했습니다.
또는 mysql 쿼리를 실행합니다.
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
비밀번호를 변경하지 않고 비밀번호 로그인을 사용하도록 루트 계정을 변경하지만, 루트 비밀번호없이 mysql / mariadb 설치가 남을 수 있습니다.
다음 중 하나를 수행 한 후 mysql / mariadb를 다시 시작해야합니다.
sudo service mysql restart
그리고 짜잔을 통해 내 개인 계정에서 액세스했습니다. mysql -u root -p
이렇게 하면 보안 이 저하된다는 점에 유의하십시오. 아마도 MariaDB 개발자는 정당한 이유로 이와 같은 루트 액세스 작업을 선택했습니다.
그것에 대해 생각하면서 나는 그것을 가지고 sudo mysql -u root -p
다시 전환하고 있지만 다른 곳에서 찾을 수 없기 때문에 내 솔루션을 게시 할 것이라고 생각했습니다.
답변
깨끗한 Ubuntu 16.04 LTS에서 localhost의 MariaDB 루트 로그인이 암호 스타일에서 sudo 로그인 스타일로 변경되었습니다.
그래서 그냥 해
sudo mysql -u root
비밀번호로 로그인하고 싶기 때문에 다른 사용자 ‘user’를 만듭니다.
MariaDB 콘솔에서 … ( ‘sudo mysql -u root’로 MariaDB 콘솔에 들어갑니다)
use mysql
CREATE USER 'user'@'localhost' IDENTIFIED BY 'yourpassword';
\q
그런 다음 bash 쉘 프롬프트에서
mysql-workbench
그리고 localhost에서 ‘yourpassword’로 ‘user’로 로그인 할 수 있습니다.
답변
명령을 시도하십시오
sudo mysql_secure_installation
Enter를 누르고 mysql / mariadb 에 루트 에 대한 새 암호를 할당합니다 .
다음과 같은 오류가 발생하면
오류 2002 (HY000) : ‘/var/run/mysqld/mysqld.sock’소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다.
서비스 활성화
service mysql start
지금 다시 들어가면
mysql -u root -p
문제를 따르는 경우에 입력 sudo su
하고 mysql -u root -p
지금 권한 적용 루트를
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<password>';
이것은 MariaDB의 내 문제를 해결했습니다 .
행운을 빕니다
답변
수퍼 유저 수락 답변에서 :
sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;
답변
Mariadb에 루트로 액세스하려면 Ubuntu에 루트로 로그인해야했습니다. 처음 설치할 때 수행하라는 메시지가 표시되는 “Harden …”과 관련이있을 수 있습니다. 그래서:
$ sudo su
[sudo] password for user: yourubunturootpassword
# mysql -r root -p
Enter password: yourmariadbrootpassword
그리고 당신은 안으로.
답변
권한을 플러시하는 새로운 명령은 다음과 같습니다.
FLUSH PRIVILEGES
이전 명령 FLUSH ALL PRIVILEGES
은 더 이상 작동하지 않습니다.
다음과 같은 오류가 발생합니다.
MariaDB [(none)]> FLUSH ALL PRIVILEGES;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ALL PRIVILEGES' at line 1
도움이 되었기를 바랍니다 🙂
답변
mysql_upgrade를 실행합니다.
확인
SHOW GRANTS FOR 'root'@'localhost';
말한다
GRANT ALL PRIVILEGES ON ... WITH GRANT OPTION
테이블이 _mysql.proxies_priv_ 존재하는지 확인하십시오.
권한 부여를 시도하는 동안 사용자 ‘root’@ ‘localhost’에 대한 액세스가 거부되었습니다. 권한을 어떻게 부여합니까?