사용자 'root'@'localhost'에 대한 액세스가 거부되었습니다(암호: YES 사용). 권한이 없습니다.
이 에러가 계속 발생하고 있습니다.
mySQL Workbench를 사용하고 있는데 루트의 스키마 권한은 null입니다.특권이 전혀 없습니다.
서버가 사용되는 플랫폼 간에 문제가 발생했는데 갑자기 문제가 발생하였습니다.
root@127.0.0.1은 많은 액세스 권한을 가지고 있는 것 같지만, 저는 그렇게 로그인하고 있습니다만, 어쨌든 localhost에 할당되어 있습니다.localhost에는 권한이 없습니다.
는 몇 일을 .FLUSH HOSTS
,FLUSH PRIVILEGES
등, 못했다 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
루트 액세스를 되돌리려면 어떻게 해야 하나요? '할 수 있다'고할 수 없기 에 커맨드 이나 그 수 없기 때문에, 「접근할 수 없다」라고 하는 것은 합니다.GRANT
나 자신에게 무엇이든.
" " 를 실행하고 SHOW GRANTS FOR root
이다.
에러 코드: 1141.호스트 '%'의 사용자 'root'에 대해 정의된 권한이 없습니다.
MySql 5.7.+에서도 같은 문제가 발생했을 경우:
Access denied for user 'root'@'localhost'
5소켓 에 MySql 5.7로 연결하면 sudo mysql
sql을
SELECT user,authentication_string,plugin,host FROM mysql.user;
그러면 다음과 같이 표시됩니다.
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
root 및 비밀번호 연결을 허용하려면 다음 명령을 사용하여 테이블 값을 업데이트합니다.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';
FLUSH PRIVILEGES;
그런 다음 select 명령을 다시 실행하면 변경된 것을 확인할 수 있습니다.
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *2F2377C1BC54BE827DC8A4EE051CBD57490FB8C6 | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
이치노은 실행 후 후할 수 .sudo mysql_secure_installation
명령어를 입력합니다.
mariadb의 경우,
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('manager');
패스워드를 설정합니다.자세한 것은, https://mariadb.com/kb/en/set-password/ 를 참조해 주세요.
루트 패스워드를 리셋하는 순서를 사용합니다.단, 루트 패스워드를 리셋하는 대신 강제로 레코드를 mysql.user 테이블에 삽입합니다.
init 파일에서 이것을 대신 사용합니다.
INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD'));
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
사용자 권한이 마음에 들지 않아 SUDO를 실행했습니다.( bash < sudo set user and password ) (이것에 의해 root의 사용자 이름과 패스워드가 no로 설정됩니다.) (Mac에서는)
sudo mysql -uroot -p
다음 명령을 사용해 보십시오.
~$ sudo /etc/init.d/mysql stop
~$ sudo mysqld_safe --skip-grant-tables &
~$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
mysql> use mysql;
mysql> update user set password=PASSWORD("root") where User='root';
mysql> flush privileges;
mysql> quit
~$ sudo /etc/init.d/mysql stop
Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+ Done mysqld_safe --skip-grant-tables
~$ sudo /etc/init.d/mysql start
~$ mysql -u root -p
* MySQL Community Server 5.6.35 is started
~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.35 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql 5.7+ 버전에서 아래 오류가 발생한 사용자용 -
Access denied for user 'root'@'localhost' (using password: YES)
새 터미널 열기
sudo /etc/init.d/mysql stop
5.가 되었습니다... MySQL Community Server 5.7.8-rc 。sudo mysqld_safe --skip-grant-tables &
로 인해 모든 이 세이프 됩니다.이 때문에 되는 경우가 있습니다. 때때로 프로세스가 단지 때문에 정지됩니다.
grep: write error: 파이프 180102 11:32:28 mysqld_safe '/var/log/mysql/error.log' 로깅이 중단되었습니다.
Ctrl+Z 또는 Ctrl+C를 누르면 프로세스가 중단되고 종료됩니다.
mysql -u root
MySQL 모니터에 오신 것을 환영합니다.명령어는 ; 또는 \g로 끝납니다.MySQL 연결 ID는 2개의 서버 버전: 5.7.8-rc MySQL Community Server(GPL)입니다.
저작권(c) 2000, 2015, Oracle 및/또는 관련 회사.무단 전재 금지.
Oracle은 Oracle Corporation 및/또는 그 계열사의 등록 상표입니다.기타 이름은 해당 소유자의 상표입니다.
도움말을 보려면 'help;' 또는 '\h'를 입력하십시오.현재 입력문을 지우려면 '\c'를 입력하십시오.
- mysql>
use mysql;
테이블 및 열 이름을 완성하기 위한 테이블 정보 읽기 이 기능을 끄면 -A를 사용하여 더 빨리 시작할 수 있습니다.
데이터베이스가 변경되었습니다.
mysql>
update user set authentication_string=password('password') where user='root';
OK,,의 경고(0.03초)의 변경된: 의 경고: 1' OK, 4' '4' '0.03' '1' '4' ': 4' '4' '1'mysql>
flush privileges;
Query OK(0.00") "0"mysql>
quit
~sudo /etc/init.d/mysql stop
..180102 11:37:12 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid.* MySQL Community Server 5.7.8-rc가 arif@ubuntu:~$ sudo /etc/init.d/sudio start ..* MySQL Community Server 5.7.8-rc 시작
mysql -u root -p
비밀번호 입력:
MySQL 모니터에 오신 것을 환영합니다.명령어는 ; 또는 \g로 끝납니다.MySQL 연결 ID는 2개의 서버 버전: 5.7.8-rc MySQL Community Server(GPL)입니다.
mysql 5.7+ 버전 이후 mysql.user 테이블에서 이름 authentication_string으로 대체되는 열 암호.
이 단계들이 누구에게나 도움이 되기를 바랍니다, 감사합니다.
Ubuntu 18을 사용하고 있었는데, 다음 명령어로 MySQL(password:root)을 설치하기만 하면 됩니다.
sudo apt install mysql-server
sudo mysql_secure_installation
일반 Ubuntu 사용자로 로그인하려고 하면 이 문제가 발생합니다.
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
하지만 슈퍼 유저를 통해 MySQL에 로그인할 수 있었습니다.다음 명령을 사용하여 일반 사용자를 통해 로그인할 수 있었습니다.
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
exit;
그러면 일반 계정으로 Mysql에 로그인할 수 있을 것입니다.
Workbench에서 이 오류가 발생하지만 터미널에서 로그인할 수 있는 경우 다음 단계를 수행하십시오.
먼저 현재 비밀번호로 로그인만 하면 됩니다.
sudo mysql -u root -p
비밀번호 강도가 낮으면 오류가 발생할 수 있으므로 비밀번호를 변경하십시오.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-strong-password';
FLUSH PRIVILEGES;
그런 다음 종료하고 새 비밀번호로 다시 로그인하십시오.
quit
sudo mysql -u root -p
정상적으로 로그인하면 다음 명령을 입력합니다.
use mysql;
'데이터베이스 변경됨'과 같은 메시지가 표시된 다음 다음과 같이 입력합니다.
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
그 다음 유형:
UPDATE mysql.user set authentication_string=PASSWORD('new-strong-password') where user='root';
그런 다음 다음과 같이 입력합니다.
FLUSH PRIVILEGES;
다음으로 종료합니다.
quit
이제 WORKBENCH에서 새 비밀번호를 사용하여 로그인해 보십시오.효과가 있기를 바랍니다.감사합니다.
Linux 시스템에서 root 비밀번호를 리셋하는 간단한 방법:
sudo dpkg-reconfigure mysql-server-5.5
액세스가 거부된 다른 이유를 확인합니다.
https://dev.mysql.com/doc/refman/5.7/en/problems-connecting.html
Ubuntu 서버에 Testlink를 설치할 때 이 문제에 직면하여 다음 절차를 따릅니다.
mysql -u root
use mysql;
update user set password=PASSWORD("root") where User='root';
flush privileges;
quit
이제 인스턴스를 중지하고 다시 시작합니다.
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
루트 패스워드를 리셋 하는 가장 쉬운 방법은 다음과 같습니다.
restart mysqld --sysqld-syslog-syslog 옵션.이를 통해 모든 사용자가 비밀번호 없이 모든 권한으로 연결할 수 있습니다.이것은 안전하지 않기 때문에 --skip-grant-tables를 --skip-networking과 함께 사용하여 원격 클라이언트의 접속을 방지할 수 있습니다.
다음 명령을 사용하여 mysqld 서버에 연결합니다.
shell > mysql 클라이언트에서 다음 스테이트먼트를 발행합니다.암호를 사용할 암호로 바꿉니다.
mysql>UPDATE mysql.user SET Password=PASSWORD('My New Pass') -> WHERE User='root'; mysql> FLUSH 특권;
서버를 중지한 후 정상적으로 재시작합니다( --skip-grant-tables 및 --skip-networking 옵션 없음).
소스 Mysql 문서 및 개인 경험:
http://dev.mysql.com/doc/refman/5.6/en/resetting-permissions.html
mysql 5.7에서는 패스워드 필드가 authentication_string으로 대체되었기 때문에 대신 다음과 같은 작업을 수행합니다.
update user set authentication_string=PASSWORD("root") where User='root';
MySQL 사용자 DB에 암호 열이 없습니다 - OSX에 MySQL 설치 링크를 참조하십시오.
제 경우 Mac OS Big Sur에 mysql을 새로 설치한 후 이 오류를 발견했습니다.
수정은 Apple 로고를 클릭하여 시스템 기본 설정으로 이동한 후 mysql을 클릭합니다.
열려 있는 설정창에 데이터베이스 초기화 버튼이 있습니다.클릭하면 다시 접속하려고 하면 해결됩니다.
관리자로 Workbench를 실행하여 동일한 문제를 해결했습니다.
회사 컴퓨터에 대한 제한 때문인 것 같습니다만, 저 같은 경우에는...
루트의 MySQL 기본 암호는 MySQL을 설치한 방법에 따라 할당됩니다.
MySQL Yum 저장소, MySQL SUSE 저장소 또는 Oracle에서 직접 다운로드한 RPM 패키지에서 암호를 설치한 경우 다음 명령을 사용하여 암호를 얻을 수 있습니다.
sudo grep 'temporary password' /var/log/mysqld.log
이 문제를 해결하려면 , 다음의 순서를 실행합니다.
- 터미널 / 명령 프롬프트를 열고 MySQL 설치 폴더의 bin 폴더로 이동합니다.그런 다음 명령을 실행합니다.
mysqld --console
. - 그 선이 보이면
171010 14:58:22 [Note] --secure-file-priv
명령 프롬프트에서 위의 명령을 실행하면 데이터 가져오기 및 내보내기와 관련된 작업이 비활성화됩니다. - 그리고 나서 당신은 그것을 확인할 필요가 있다.
mysqld
Windows 방화벽 또는 다른 프로그램에 의해 차단되어 있습니다. - Windows 방화벽에 의해 차단되어 있는 경우 차단 해제 후 설정을 저장해야 합니다.
- 의 차단을 해제
mysqld
또는mysql
다음의 순서에 따릅니다.- 명령 프롬프트로 이동하여 입력
wf.msc
방화벽 설정을 엽니다. - Windows 방화벽을 통해 앱 또는 기능 허용을 클릭합니다.
- 체크하다
mysqld
또는mysqld
instance는 목록에서 사용할 수 있으며 도메인(공용 및 개인) 체크박스를 켜고 설정을 저장합니다.
- 명령 프롬프트로 이동하여 입력
- bin 폴더로 돌아가서 1단계에서 명령을 다시 시도하십시오.
- 정상적으로 동작해, 에러는 표시되지 않습니다.
이제 MySQL 콘솔을 문제없이 실행할 수 있습니다!
다음 sql을 사용하여 MySQL 서버를 재시작하여 동일한 문제를 해결했습니다.
update mysql.user set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y',Create_tablespace_priv='Y'
where user='root';
몇 시간 동안 사용자 'root'@'localhost(패스워드:YES 사용)에 대한 접근 거부 작업을 수행했는데 다음과 같은 해결 방법을 발견했습니다.
The answer to this problem was that in the my.cnf located within
/etc/mysql/my.cnf
the line was either
bind-address = 127.0.0.1
(or)
bind-address = localhost
(or)
bind-address = 0.0.0.0
I should prefer that 127.0.0.1
I should also prefer 0.0.0.0, it is more flexible
because which will allow all connections
탈출할 필요는 없을 것 같아--init-file
파라미터:
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\\mysql-init.txt
다음 항목이어야 합니다.
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\mysql-init.txt
위의 문제의 경우 시스템에서 패스워드는 프로그램에서 패스한 패스워드와 일치해야 합니다.왜냐하면 프로그램을 실행하면 사용자가 root로 지정한 시스템 패스워드가 확인되기 때문에 에러가 발생함과 동시에 레코드가 데이터베이스에서 삭제되지 않기 때문입니다.
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
class Delete
{
public static void main(String []k)
{
String url="jdbc:mysql://localhost:3306/student";
String user="root";
String pass="jacob234";
try
{
Connection myConnection=DriverManager.getConnection(url,user,pass);
Statement myStatement=myConnection.createStatement();
String deleteQuery="delete from students where id=2";
myStatement.executeUpdate(deleteQuery);
System.out.println("delete completed");
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
시스템 비밀번호를 jacob234로 유지하고 코드를 실행합니다.
저도 같은 문제였지만 32(비트)에서 mysql 서버를 사용하고 있었고 워크벤치가 64(비트) 버전으로 동작하고 있었기 때문에 발생하였습니다.서버와 워크벤치의 버전이 같아야 합니다.
xpress
Laravel 어플리케이션을 사용하여 Mysql 데이터베이스를 연결하려고 할 때도 같은 문제가 있었습니다.사용자의 패스워드를 확인하시기 바랍니다.MySQL 비밀번호에는 #, &... 등의 특수문자를 사용할 수 없습니다.
내 경우:
- 플러그인 인증을 " " (빈)으로 설정했는데 mysql 서버를 실행할 수 없습니다.
해결책:
- nano /etc/my.cnf
- 편집:
[미스터리]
스킵 스킵하다
- service mysql 재시작
- mysql -u 루트
- mysql을 사용하다
- UPDATE mysql.user SET 플러그인 = 'sysql_password' Where 사용자 = 'root'
- 특권을 해제하다
원인은 /var/run/mysqld에 mysqld 파일이 없는 것일 수 있습니다.
sudo service mysql stop
sudo mysqld_safe --skip-grant-tables
sudo service mysql start
파일이 종료되지 않으면 파일을 만듭니다.
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
mysql -uroot -p123에 로그인 할 수 있는지 확인합니다.그렇지 않으면 로그인을 합니다.
sudo mysql -u root
use mysql;
show tables;
describe user;
update user set authentication_string=password('1111') where user='root';
FLUSH PRIVILEGES;
exit;
mysql -uroot -p123
link - UNIX 소켓 파일용 mysqld_safe 디렉토리 '/var/run/mysqld'가 없습니다.
alter user 'root'@'localhost' identified with mysql_native_password by '$your_password$';
그것은 나에게 효과가 있었다.
주의: 예를 들어 강력한 비밀번호를 사용합니다.
alter user 'root'@'localhost' identified with mysql_native_password by 'root';
Windows의 경우:-
유사한 문제로 인스턴스 구성이 실패하고 루트 계정에 로그인할 수 없는 경우.
이 문제를 해결하기 위해 수행한 절차:-
- 실행 중인 경우 MySql 서비스를 중지합니다.
- 설치 마법사의 '제거' 옵션을 사용하여 MySql을 제거합니다.
- MySql 서비스가 서비스에서 제거되지 않은 경우
sc 삭제 <MYSql_SERVICE_NAME>
- MySql 폴더에 포함된 모든 데이터('프로그램 파일', '프로그램 데이터' 또는 지정한 사용자 지정 설치 디렉토리)를 삭제합니다.
- 환경변수에서 MySql 경로를 제거합니다.
- Windows 방화벽을 무효로 합니다.
- root 계정을 다시 설치하고 새 비밀번호를 사용하여 구성합니다.
같은 사실과 내 db 사용자 이름이 잘못된 것으로 밝혀졌다 일어났다.
언급URL:https://stackoverflow.com/questions/17975120/access-denied-for-user-rootlocalhost-using-password-yes-no-privileges
'programing' 카테고리의 다른 글
브라우저 또는 탭 닫기 감지 (0) | 2022.09.12 |
---|---|
javascript에서 소수점 2자리 float를 해석하는 방법은? (0) | 2022.09.12 |
봄철 순환 의존성 (0) | 2022.09.12 |
transition-group 속성 또는 소품 설정 방법 (0) | 2022.09.12 |
Guice의 Assisted 사용방법주사? (0) | 2022.09.12 |