mysql_upgrade
루트로 실행하면 다음을 반환 하는 명령을 실행해야 합니다.
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/lib/mysql/mysql.sock'
mysqlcheck: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
FATAL ERROR: Upgrade failed
그래서 사용자로 로그인해야 한다고 결정했습니다 mysql
. 어떻게 해야 합니까?
mysql
사용자의 비밀번호를 설정 passwd
하고 로그인을 시도했습니다.
$ ssh -l mysql 12.34.56.78
[email protected]'s password:
Permission denied, please try again.
나는 루트로 로그인하고 mysql
에 대한 쉘을 설정했습니다 chsh -s /bin/bash mysql
. /etc/ssh/sshd_config
항목에 AllowUsers
user 가 포함되어 mysql
있고 후자 그룹 DenyGroups
에만 user 가 포함되어 있지 않은지 확인했습니다 .deniedssh
mysql
# getent group deniedssh
deniedssh:x:500:
비대화형 사용자로 로그인하려면 어떻게 해야 합니까 mysql
?
답변1
귀하의 추론에 결함이 있으므로 mysql 사용자로 셸에 로그인할 필요가 없습니다. 당신이 보고 있는 인증 실패는 mysqld에서 발생한 것입니다. mysql과 통신하는 데 사용할 사용자 이름과 비밀번호를 알려주어야 합니다 mysql_upgrade
. 여기에는 유닉스 인증이 전혀 포함되지 않습니다.
답변2
이는 일반적인 사용 사례 sudo
이며 시스템 관리자가 부여한 사용자로 명령(또는 구성에 따라 쉘)을 실행할 수 있습니다( root
대부분의 초보자가 생각하는 것과는 다릅니다).
구성 에 따라 sudo
이 작업을 수행할 수도 있습니다.
$ sudo -s -u mysql
귀하의 "일반" 사용자 계정으로. 다음 명령을 실행하여 어떤 사용자가 될 수 있는지 확인할 수 있습니다.
$ sudo -l
이는 다음과 같을 수 있습니다(내 로컬 설치 및 "일반" 사용자).
$ sudo -l
Matching Defaults entries for aw on swiftsure:
env_keep+=HOME, env_keep+=XDG_SESSION_COOKIE, env_keep+="XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER", insults, tty_tickets, editor=/usr/bin/vim, !lecture
Runas and Command-specific defaults for aw:
Defaults>root targetpw, env_file=/etc/sudo/root.env
User aw may run the following commands on swiftsure:
(ALL) ALL
(ALL) NOPASSWD: /usr/bin/htop, /usr/sbin/iotop, /usr/sbin/powertop
(ALL) NOPASSWD: /usr/bin/wpa_cli
$
마지막 몇 줄이 중요한 줄입니다. 이 예에서는 각 명령( )을 각 사용자( )로 실행할 aw
수 있으며 , 각 명령( )을 암호( )를 제공하지 않고도 각 사용자( )로 실행할 수 있음을 사용자에게 알려줍니다 .ALL
(ALL)
htop
iotop
powertop
wpa_cli
(ALL)
NOPASSWD
사용자에게 항목이 있는 경우 (ALL) ALL
위 명령을 실행하여 사용자가 될 수 있습니다 mysql
. 그렇지 않은 경우 /etc/sudoers
파일( visudo
)을 편집하고 다음을 포함하는 행을 추가 해야 할 수도 있습니다.
username (ALL)=ALL
이것이 당신을 만들 것입니다모든user ( username
비밀번호 입력 후) 또는 이와 유사한 것
username (mysql)=ALL
이것은 단지 당신을 사용자로 만듭니다 mysql
.