programing

sudo 없이 mysql 서버에 연결

procenter 2022. 12. 29. 21:47
반응형

sudo 없이 mysql 서버에 연결

명령어는 다음과 같습니다.

mysql -u root -p

에러가 표시됩니다.

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

그러나 sudo 권한을 실행하면 다음과 같이 작동합니다.

sudo mysql -u root -p

sudo 요건을 없애면 intelij에서 데이터베이스를 열 수 없기 때문에 해제가 가능한가요?이 질문에 대한 답변에서 다음을 시도했습니다. "Connect to local MySQL server without sudo" (sudo 없이 로컬 MySQL 서버에 연결)

sudo chmod -R 755 /var/lib/mysql/

도움이 안 됐어요위 질문에서는 다른 오류가 발생하였습니다.

mysql에 로그인하기 위해 필요한 것은 루트 사용자뿐입니다.이 문제를 해결하려면 새 사용자를 만들고 필요한 데이터베이스에 대한 액세스를 허용해야 합니다.

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'localhost';

지금이다newuser는 sudo 요건 없이 로그인할 수 있습니다.

mysql -u newuser -p

알고리즘을 변경해야 합니다.제 일을 따라다니면서

mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
mysql > FLUSH PRIVILEGES;

동일한 ROOT 사용자 또는 NEW_USER를 사용하여 SUDO 권한을 제거할 수 있습니다.다음으로 SUDO를 사용하지 않고 ROOT를 사용하여 연결을 삭제하는 예를 나타냅니다.

SUDO를 사용하여 MY-SQL에 연결

sudo mysql -u root

사용자 테이블에서 현재 루트 사용자 삭제

DROP USER 'root'@'localhost';

새 ROOT 사용자를 만듭니다(필요에 따라 다른 사용자를 생성할 수 있습니다).

CREATE USER 'root'@'%' IDENTIFIED BY '';

새 사용자에게 권한 부여(ROOT)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

권한을 플러시하여 Grant 테이블을 즉시 새로고침합니다.(특권을 플래시할 필요가 있는 이유는 무엇입니까?)

FLUSH PRIVILEGES;

이제 다 괜찮아.만약을 위해 새 루트 사용자가 생성되었는지 확인합니다.

SELECT User,Host FROM mysql.user;

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | %         |
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)

mysql을 종료합니다(CTRL + Z를 누릅니다).SUDO를 사용하지 않고 MySQL에 연결

mysql -u root

이게 도움이 되길 바라!

먼저 sudo를 사용하여 mysql에 로그인합니다.

그런 다음 이 코드를 사용하여 루트 사용자의 "coloumn" 값을 "coloumn" 또는 "auth_password"에서 "coloumn_password"로 변경합니다.

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin IN ('unix_socket', 'auth_socket');

FLUSH PRIVILEGES;

마지막으로 mysql 서비스를 재시작합니다.바로 그겁니다.

자세한 내용은 이 링크를 참조하십시오.

갱신:

mysql 또는 mariadb의 새로운 버전에서는 다음을 사용할 수 있습니다.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password USING PASSWORD('your-password');
FLUSH PRIVILEGES;

저는 다음 명령어를 사용하여 이 문제를 해결했습니다.

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'username'@'localhost';
FLUSH PRIVILEGES;

여기서,username= 원하는 사용자 이름.

그리고.password= 원하는 암호입니다.

다음 쿼리를 사용할 수 있습니다.

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

이 쿼리로 충분합니다.

답변은 mysql 대신 mariaDB용으로 약간 수정해야 합니다.

sudo를 사용하여 루트로 처음 로그인:

$ sudo mysql -uroot

다음으로 mariadb 루트 사용자를 변경합니다.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password USING PASSWORD('mypassword');
FLUSH PRIVILEGES;

이제 sudo는 더 이상 필요하지 않습니다.

$ mysql -uroot -p

사용 버전: mysql Ver 15.1 Readline 5.1을 사용한osx10.15(x86_64)용 Distributed 10.4.13-MariaDB

sudo를 사용하여 mysql에 로그인합니다.sudo mysql -u root -p

그 후 현재 root@localhost 계정을 삭제합니다.

~ MariaDB [(none)]> DROP USER 'root'@'localhost';
~ MariaDB [(none)]> CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
~ MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
~ MariaDB [(none)]> FLUSH PRIVILEGES;

당신이 언급한 질문의 코멘트에는 다음과 같은 내용이 있습니다.

네, 소켓 파일 경로에 있는 모든 디렉토리를 분석하려고 하면 o+rx와 sock 파일도 필요합니다(다른 사용자가 수정할 수 있도록 하는 것은 좋지 않습니다).

mysql.sock을 삭제하고 mysqld를 재시작할 수도 있습니다.이 파일은 적절한 권한을 가진 데몬에 의해 작성되어야 합니다.

질문(당신이 봤다고 말한 질문)에 효과가 있는 것 같기 때문에 당신에게도 효과가 있을 수 있습니다.

오류 메시지:

"ERROR 1698 (28000):사용자 'root'@'localhost'에 대한 액세스가 거부되었습니다."

는 서버가 이 사용자에 대한 연결을 허용하지 않으며 mysql이 소켓에 액세스할 수 없음을 의미합니다.

문제를 해결하려면 다음을 수행하십시오.

DB 로그인

sudo mysql -u root -p

다음에, 다음의 변경을 실시합니다.

MariaDB []>use mysql;
MariaDB [mysql]>update user set plugin=' ' where User='root';
MariaDB [mysql]>flush privileges;
MariaDB [mysql]>exit

sudo를 사용하지 않고 다시 로그인 시도

언급URL : https://stackoverflow.com/questions/37239970/connect-to-mysql-server-without-sudo

반응형