java - 오류:클라이언트가 서버에서 요청한 인증 프로토콜을 지원하지 않습니다. MySQL 클라이언트 업그레이드 고려




jdbc (2)

JDBC 프로그램을 실행하는 동안 데이터베이스에 연결하는 동안 다음 오류가 발생합니다.

Exception in thread "main" 
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Client does 
not support authentication protocol requested by server; consider upgrading 
MySQL client
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:921)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:885)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3421)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1247)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at 
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at main.java.MyFirstJdbcProgram.readDataBase(MyFirstJdbcProgram.java:23)
at main.java.Main.main(Main.java:6)

이 문제를 조사했을 때 사용자에게 권한을 부여해야하기 때문에 아래 오류가 있다는 것을 알아야합니다.

  1. mysql -u root -p
  2. 그 다음 암호를 입력했다.
  3. 그 다음 나는 달렸다.

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'mypassword';    

    또한 나는

    UPDATE user SET authentication_string=password('mypassword') WHERE user='root';

하지만 난 아래에 오류가 있어요.

오류 1064 (42000) : SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서를 확인하여 올바른 구문이 1 번 줄에 'IDENTIFIED BY'mypassword '근처에서 사용하도록하십시오.


운영:

귀하의 환경에서 export MYSQL_PW='your_password'export MYSQL_PW='your_password' 아래 코드에서 'process.env.MYSQL_PW'를 비밀번호로 사용하십시오.

var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',  //your root username 
  database : 'your_database',   //the name of your db (create this if you haven't already)
  password : process.env.MYSQL_PW   //your root user's password
});

이 오류는 MySQL Connector / J 5.1.45 이전 버전을 사용 중이기 때문에 발생합니다. MySQL 8에는 새로운 버전의 인증 메커니즘 ( caching_sha2_password )이 도입되었습니다.이 인증 메커니즘은 해당 버전의 드라이버에서 지원되지 않습니다.

MySQL Connector / J 5.1.46 이상으로 업그레이드해야합니다. 최신 버전의 MySQL Connector / J 드라이버는 8.0.15입니다. https://dev.mysql.com/downloads/connector/j/ 에서 다운로드하거나 Maven / Gradle 등에서 올바른 버전을 지정할 수 있습니다.