非対話型ユーザーとしてどのようにログインしますか? (例:mysql)

非対話型ユーザーとしてどのようにログインしますか? (例:mysql)

mysql_upgraderoot として実行する場合は、次を返すコマンドを実行する必要があります。

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エントリにAllowUsersuserが含まれておりmysql、後者のグループDenyGroupsにのみuserが含まれていないことを確認しました。deniedsshmysql

# 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)htopiotoppowertopwpa_cli(ALL)NOPASSWD

ユーザーに項目がある場合は、上記の(ALL) ALLコマンドを実行してユーザーにすることができますmysql。そうでない場合は、/etc/sudoersファイル(visudo)を編集して次の行を追加する必要があります。

username      (ALL)=ALL

これはあなたを作るでしょうすべてuser(usernameパスワードを入力した後)または同様のもの

username      (mysql)=ALL

これはあなたをユーザーにしますmysql

関連情報