mysql_upgrade
root として実行する場合は、次を返すコマンドを実行する必要があります。
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.
私はrootとしてログインし、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
。これにはUnix認証はまったく含まれていません。
答え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
。