GNU/Linux >> Belajar Linux >  >> Linux

Otomatisasi mysql_secure_installation dengan perintah gema melalui skrip shell

Saya baru saja melakukan ini di CentOS 6.7 dengan yang berikut:

mysql_secure_installation <<EOF

y
secret
secret
y
y
y
y
EOF

Sejak mysql_secure_installation hanyalah skrip Bash, cukup periksa kode sumber mentah seperti yang ditunjukkan di sini. Cari baris yang bertuliskan, do_query (perhatikan bahwa ruang ekstra yang saya tempatkan setelah do_query; perlu menemukan kueri versus fungsi) dan kemudian Anda dapat menemukan perintah ini.

UPDATE mysql.user SET Password=PASSWORD('root') WHERE User='root';
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;

Perhatikan bahwa untuk contoh ini, kata sandi saya disetel ke root tetapi jangan ragu untuk mengubahnya agar sesuai dengan kebutuhan penyiapan Anda. Pokoknya, ambil tumpukan perintah MySQL itu dan simpan dalam file bernama mysql_secure_installation.sql .

Setelah selesai, jalankan saja perintah berikut melalui skrip untuk mengamankan pemasangan MySQL:

mysql -sfu root < "mysql_secure_installation.sql"

s membungkam kesalahan dan f memaksa perintah untuk melanjutkan bahkan jika salah satu tersedak. u berkaitan dengan nama pengguna yang langsung mengikutinya—dalam hal ini—jelas root .

Jalankan itu dalam skrip penerapan di mana MySQL dipasang pada awalnya tanpa kata sandi dan Anda siap untuk menguncinya tanpa interaksi keyboard apa pun.

PS:Skrip ini disatukan untuk mengamankan instalasi MySQL di Ubuntu 14.04 yang diinstal dengan export DEBIAN_FRONTEND=noninteractive atur dan perintah pemasangan sebenarnya diatur ke sudo -E aptitude install -y --assume-yes -q mysql-server mysql-client . Melakukan itu akan menginstal MySQL dengan bersih di Ubuntu tanpa kata sandi; yang bagus untuk skrip penerapan. mysql -sfu root < "mysql_secure_installation.sql" ini cukup kunci semuanya dalam beberapa detik setelah penginstalan itu terjadi.


Saya menemukan pertanyaan ini tetapi memutuskan untuk menjalankan kueri secara manual melalui skrip Bash:

#!/bin/bash

# Make sure that NOBODY can access the server without a password
mysql -e "UPDATE mysql.user SET Password = PASSWORD('CHANGEME') WHERE User = 'root'"
# Kill the anonymous users
mysql -e "DROP USER ''@'localhost'"
# Because our hostname varies we'll use some Bash magic here.
mysql -e "DROP USER ''@'$(hostname)'"
# Kill off the demo database
mysql -e "DROP DATABASE test"
# Make our changes take effect
mysql -e "FLUSH PRIVILEGES"
# Any subsequent tries to run queries this way will get access denied because lack of usr/pwd param

Anda dapat mencoba menggunakan ekspektasi, yang mengotomatiskan aplikasi interaktif. Lihat penginstalan mysql_secure_otomatis ini atau modifikasi saya.


Linux
  1. Perilaku Tak Terduga Dari Skrip Shell?

  2. Script Shell Dengan Fungsi Dan Parameter Sebagai Variabel?

  3. Tambahkan baris ke file /etc/hosts dengan skrip Shell

  1. Klarifikasi tentang perilaku skrip shell bersama dengan pipa

  2. Periksa kata sandi pengguna dengan skrip shell

  3. Menjalankan perintah sebagai pengguna nologin

  1. Shell Script Wrapper Untuk Mencegah Menjalankan Perintah Tanpa Argumen?

  2. Script Shell Hang Pada Perintah Mail?

  3. Jalankan Script Dengan Argumen Sebagai Pengguna?