암호없이 리눅스 루트 사용자 mysql 루트 액세스 허용


28

cPanel에서 루트로 로그인하고 호스트 이름과 암호없이 "mysql"을 입력하면 mysql 루트 사용자에게 직접 액세스 할 수 있습니다.

Linux 루트 사용자가 cPanel에서와 동일한 방식으로 mysql 루트 사용자에게 암호를 덜 사용하는 비 서버 서버 중 하나에 대해이 작업을 수행하고 싶습니다.

이것이 가능한가 ?

답변:


52

가장 쉬운 방법은 ~ / .my.cnf 파일의 client 섹션을 사용하여 자격 증명을 추가하는 것입니다.

[client]
user=root
password=somepassword
...

루트로만 파일을 읽을 수있게하는 것이 좋습니다.


1
그렇습니다. 이것이 작동하고 이것이 cPanel이하는 방식입니다
— user1066991

9
잠재적 인 보안 문제를 지적해야 /etc/my.cnf합니다. mysql 서버가 부팅하는 데 사용 하는 부분 을 편집하지 않도록주의해야합니다 . mysql 루트 사용자를 /etc/my.cnfANYONE 에 넣으면 모든 데이터베이스에서 모든 권한을 가진 mysql 서버를 암호없이 사용할 수 있습니다. Iain .my.cnf은 물론 루트 홈에서 쉘 사용자 자신 을 가리 킵니다 .
— Koen van der Rijt

~ / .my.cnf 파일이 없으면 어떻게합니까? 그것을 만들고 mysqld를 다시 시작하면이 작업을 수행 할 수 있습니까?
— Amalgovinus

21

mysql 5.7+의 경우 초기 설정에 빈 암호를 설정하면 mysql이 자동으로 auth_socket전략 으로 사용 됩니다. 전략을 변경하지 않고 비밀번호를 업데이트해도 아무런 결과가 없습니다. 사용자가 인 경우 항상 비밀번호를 사용하지 않고 로그인 할 수 있습니다 root.

해결 방법 다음 명령을 실행하여 인증 전략을 변경하고 비밀번호를 설정하십시오.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''

참조 : https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


3
나는 그것을 작동시키기 위해 끝에 빈 줄을 추가해야했다 :ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
— kramer65

@kramer를 가로 질러 내가 당신으로 설정 한 경우에만 작동합니다 ... BY "";. 감사!
— Juan Antonio

암호를 'ANY_PASSWORD'(으)로 변경하고 비밀번호를 지우지 않습니다. 암호없이 지우고 로그인하려면 빈 문자열로 설정하십시오.
— 페르난도 코쉬

7

MySQL 5.6.6부터 mysql_config_editor를 사용하여 자동 로그인하는 암호화 된 파일을 만들 수 있습니다.

mysql_config_editor set --login-path=client --host=localhost --user=root --password

그런 다음 프롬프트가 표시되면 비밀번호를 입력하십시오.

참고 : 비밀번호에 '#'이 있고 다른 문자가 있으면 비밀번호를 입력 할 때 작은 따옴표를 사용하십시오.


작은 따옴표로 설명 할 수 있습니까? 터미널에서 암호를 입력하라는 메시지가 표시됩니다. 암호를 작은 따옴표로
— 묶고 있습니까?

예, 특수 문자가 있으면 따옴표없이 입력하면 작동하지 않습니다. 메시지가 표시되면 '(작은 따옴표)를 입력 한 다음 비밀번호를 입력 한 다음'를 입력하십시오.
— Brian Deterling

0

mysql 루트 암호 만 포함 된 파일을 만들고 루트 만 읽을 수 있습니다.

# ls -l /root/.mysqlpw 
-rw------- 1 root root 7 2013-08-19 13:24 /root/.mysqlpw

당신은 데이터베이스를 가져올 수 있습니다

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase < databasedump.sql

또는 데이터베이스에 연결하고 mysql 명령을 발행하십시오.

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20460
Server version: 5.1.63-0ubuntu0.10.04.1 (Ubuntu)

Copyright (c) 2000, 2011, 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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| yourdatabase       |
+--------------------+
3 rows in set (0.00 sec)

mysql> show tables;
...

5
이것은 다른 답변보다 훨씬 많은 작업입니다. 암호가 너무 짧습니다. :)
— Michael Hampton

8
이러지 마십시오. 누구나 읽을 수있는 명령 줄에 암호를 넣습니다. ps(1)
— camh

정말 좋은 생각은 아닙니다
— Fernando Kosh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.