암호없이 리눅스 루트 사용자 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.