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
다시 전환하고 있지만 다른 곳에서 찾을 수 없기 때문에 내 솔루션을 게시 할 것이라고 생각했습니다.