새 서버를 설정하고이 문제가 계속 발생합니다.
루트 사용자로 MySQL 데이터베이스에 로그인하려고하면 오류가 발생합니다.
오류 1698 (28000) : 사용자 ‘root’@ ‘localhost’에 대한 액세스가 거부되었습니다.
터미널 (SSH), PHPMyAdmin 또는 MySQL 클라이언트 (예 : Navicat)를 통해 연결해도 문제가되지 않습니다. 그들은 모두 실패합니다.
mysql.user 테이블을보고 다음을 얻습니다.
+------------------+-------------------+
| user | host |
+------------------+-------------------+
| root | % |
| root | 127.0.0.1 |
| amavisd | localhost |
| debian-sys-maint | localhost |
| iredadmin | localhost |
| iredapd | localhost |
| mysql.sys | localhost |
| phpmyadmin | localhost |
| root | localhost |
| roundcube | localhost |
| vmail | localhost |
| vmailadmin | localhost |
| amavisd | test4.folkmann.it |
| iredadmin | test4.folkmann.it |
| iredapd | test4.folkmann.it |
| roundcube | test4.folkmann.it |
| vmail | test4.folkmann.it |
| vmailadmin | test4.folkmann.it |
+------------------+-------------------+
보다시피 root는 액세스 할 수 있어야합니다.
한동안 문제를 해결하려고했기 때문에 서버는 매우 간단합니다.
Apache, MySQL 및 PHP와 함께 Ubuntu 16.04.1 LTS를 실행하여 웹 사이트를 호스팅하고 iRedMail 0.9.5-1을 사용하여 메일을 호스팅 할 수 있습니다.
iRedMail을 설치하기 전에 MySQL 데이터베이스에 로그인하면 정상적으로 작동합니다. 나는 또한 iRedMail을 설치하려고 시도했지만 루트도 작동하지 않습니다 …
누군가 MySQL 로그인 문제를 해결하는 방법 또는 기존 MySQL 설치 위에 iRedMail을 설치하는 방법을 알려줄 수 있다면. 그리고 예 설치 팁을 시도했지만 구성 파일에서 해당 변수를 찾을 수 없습니다.
답변
Ubuntu, mysql과 같은 일부 시스템은 기본적으로 UNIX auth_socket 플러그인을 사용 합니다.
기본적으로 다음을 의미합니다. db_users를 사용 하면 시스템 사용자 신분에 의해 “인증”됩니다 . root
다음을 수행 하여 사용자가 이와 같이 설정되어 있는지 확인할 수 있습니다 .
$ sudo mysql -u root # I had to use "sudo" since is new installation
mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------------------+
| User | plugin |
+------------------+-----------------------+
| root | auth_socket |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
쿼리에서 볼 수 있듯이 root
사용자는 auth_socket
플러그인을 사용하고 있습니다
이 문제를 해결하는 두 가지 방법이 있습니다.
mysql_native_password
플러그인 을 사용하도록 루트 사용자를 설정할 수 있습니다- 당신은 당신
db_user
과 함께 새로운system_user
것을 만들 수 있습니다 (권장)
옵션 1:
$ sudo mysql -u root # I had to use "sudo" since is new installation
mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ service mysql restart
옵션 2 : (your_SYSTEM_USER를 사용자 이름으로 바꿉니다)
$ sudo mysql -u root # I had to use "sudo" since is new installation
mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ service mysql restart
옵션 # 2를 사용하는 경우 시스템 사용자 이름 ( mysql -u YOUR_SYSTEM_USER
) 으로 mysql에 연결해야합니다.
참고 : 일부 시스템 (예 : 데비안 스트레치)에서 ‘auth_socket’플러그인의 이름은 ‘unix_socket’ 이므로 해당 SQL 명령은 다음과 같아야합니다.UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
업데이트 :
앤디의 코멘트를 업데이트하는 MySQL의 8.xx에 보인다 @ / 교체에서 auth_socket
위해 caching_sha2_password
당신이 문제를 이해하는 데 도움이 될 것입니다 그러나 위의 단계,이를 테스트하기 위해 MySQL의 8.xx에있는 시스템 설정이 없습니다. 답장은 다음과 같습니다.
MySQL 8.0.4에서 변경된 하나의 새로운 기본 인증 플러그인은 ‘caching_sha2_password’입니다. 새로운 ‘YOUR_SYSTEM_USER’에는이 인증 플러그인이 있으며 이제 “mysql -u YOUR_SYSTEM_USER -p”로 bash 쉘에서 로그인하고 프롬프트에서이 사용자의 비밀번호를 제공 할 수 있습니다. “사용자 설정 플러그인 업데이트”단계가 필요하지 않습니다. 8.0.4 기본 인증 플러그인 업데이트는 https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/를 참조 하십시오.
답변
여기를 확인하십시오 :
MYSQL의 새로운 버전은 이런 식으로합니다.
새로운 my-sql에서 설치하는 동안 암호가 비어 있으면 auth_socket
플러그인을 기반으로합니다 .
올바른 방법은 sudo
권한 으로 my-sql에 로그인하는 것 입니다.
$ sudo mysql -u root -p
그런 다음 다음을 사용하여 비밀번호를 업데이트하십시오.
$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
이것이 완료 stop and start
되면 mysql 서버.
$ sudo service mysql stop
$ sudo service mysql start
자세한 내용은 이 링크를 참조하십시오 .
의심의 여지없이 의견을 말하십시오.
답변
Windows 10 데스크톱에서 Putty를 통해 상호 작용하는 Debian 8 VM에서이 문제가 발생했습니다.
여기에 다양한 제안을 시도했지만 아무런 효과가 없었으며 데비안 호스트에서 MariaDB를 실행하고 있습니다. 결국 나는 안전 모드에서 db 서버를 시작할 수 없다는 것을 알았지 만 필요하지 않았고 다음 명령이 실제로 작동했습니다. 즉 새로 작성된 MySql 사용자가 MySql / MariaDB 서버에 로그인 할 수있게했습니다.
sudo service mysql restart
sudo mysql # logs in automatically into MariaDB
use mysql;
update user set plugin='' where user='your_user_name';
flush privileges;
exit;
sudo service mysql restart # restarts the mysql service
위의 방법으로 문제가 해결되지 않으면 zetacu의 게시물 ( zetacu )에 설명 된 단계 를 따른 다음 내 단계를 따르십시오.
이제 원격 터미널 클라이언트를 사용하고 다음 명령을 사용하여 mysql에 안전하게 로그인 할 수 있어야합니다.
mysql -u your_user_name -p
프롬프트가 표시되면 비밀번호를 입력하십시오.
답변
MySQL 연결을 제거하는 것이 좋습니다.
업데이트-이것은 MySQL 버전 5.5 용입니다. 버전이 다르면 그에 따라 첫 번째 줄을 변경하십시오
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
그리고 다시 설치하지만 이번에는 루트 암호를 직접 설정하십시오. 이것은 많은 노력을 절약 할 것입니다.
sudo apt-get update
sudo apt-get install mysql-server
답변
여기에 해결책이없는 몇 시간의 노력 끝에, 이것은 나를 위해 일한 다음 비밀번호 열이 이제 authentication_string이라는 YouTube 비디오를 발견했습니다. 그래서 다음과 같이 암호를 변경할 수있었습니다. 먼저 터미널에서 mysql에 들어가십시오.
sudo mysql
그런 다음 mysql 유형 뒤에 mysql>
mysql> use mysql
mysql> update user set authentication_string=PASSWORD("mypass") where user='root';
mysql> flush privileges;
mysql> quit;
이 시점에서 mysql에서 일반 터미널 위치로 돌아갑니다. 이를 적용하려면 mysql을 다시 시작해야합니다. 해당 유형의 경우 다음을 수행하십시오.
sudo service mysql restart
이해를 돕기 위해이 비디오 링크 를 참조하십시오
답변
1 단계. sudo mysql -u root -p
2 단계. USE mysql;
3 단계. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
여기서 ‘admin’은 새 비밀번호이므로 변경할 수 있습니다.
단계 4. exit
감사. 끝났습니다.
답변
sudo 필요 없음
데이터베이스는 2 개의 모든 권한 계정으로 초기화됩니다. 첫 번째 계정은 액세스 할 수없는 “root”이고 사용자 이름이있는 두 번째 계정입니다 (command로 확인 whoami
).
루트 계정에 액세스하려면 사용자 이름으로 로그인해야합니다
mysql -u $(whoami)
루트의 암호를 수동으로 변경하십시오.
use mysql;
set password for 'root'@'localhost' = password('YOUR_ROOT_PASSWORD_HERE');
flush privileges;
quit
‘루트’로 로그인
mysql -u root -p