ソフトウェアの更新後に起動するたびに実行する必要があるSQLクエリがあります(アップデートはmysqlの新しいインストールに付属しているため、debian-sys-maintユーザーのパスワードが変更され、スクリプトがデータベース内で更新されます)。 /etc/init.dにスクリプトがあり、それをrootとして実行すると、次のことが行われます./update
。しかし、起動すると正しく実行されません。プロセス全体を実行するためにサービスコマンドを実行しましたが、init.d
次のように表示されます。
エラー1045(28000):ユーザー「root」@「localhost」へのアクセスが拒否されました(パスワードの使用:NO
/root/.my.cnf
他のさまざまなスクリプトで使用せずにセキュリティを強化するためにプレーンテキストパスワードを入力しました。-p
スクリプトを手動で呼び出すと、mysqlの呼び出しは完璧になります。ただし、起動時以外のサービスプロセスを使用する場合はそうではありません。別の質問では、スクリプト環境が正しく設定されていない可能性があると述べましたが、スクリプトからmysqlを呼び出して/root/.my.cnf
。
スクリプトがルート所有であり、755権限を持っていることを確認しました。動作させるにはどうすればよいですか?
ベストアンサー1
init.d スクリプトの実行時に init.d スクリプトから明示的に取得されない限り、.my.cnf スクリプトは使用されません。クロンタップと少し似ています。だから、ソースを見つけて動作していることを確認してください。
一方、このスクリプトはrootとしてデータベースにログインする必要がありますか?オペレーティングシステムレベルのユーザーがrootである必要がある理由は理解していますが、データベース自体にはなぜそのような権限を持つユーザーが必要ですか?