mysqld sunucusunu başlatırken, seçenekler dosyasında veya komut satırında program seçeneklerini belirtebilirsiniz. Bu seçenekler diğer MySQL özelliklerinin kilidini açmak, değişkenleri değiştirmek veya kısıtlamalar getirmek içindir.
MySQL sunucusunda seçenekler bu şekilde okunur:
- mysqld, [mysqld] ve [server] gruplarındaki seçenekleri okur
- mysqld_safe [mysqld], [server],[mysqld_safe] ve [safe_mysqld] gruplarındaki seçenekleri okur
- mysql.server [mysqld] ve [mysql.server] gruplarındaki seçenekleri okur.
kullanarak MySQL tarafından desteklenen seçeneklerin kısa bir özetini görebilirsiniz:
$ mysqld --help
Tam listeyi görmek için şu komutu kullanın:
$ mysqld --verbose --help
Sunucu başlangıcında ayarlanabilen bu sistem değişkenlerinden biri mysqld_secure-file-priv’dir
mysqld_secure-file-priv değişkeni nedir?
Veri alma ve verme işlemlerinin etkisini sınırlamak içinecure_file_priv değişkeni kullanılır. Etkilenen işlemlere örnek olarak LOAD DATA veSELECT … INTO OUTFILE deyimleri veLOAD_FILE() işlevi tarafından gerçekleştirilen işlemler verilebilir. Bu işlemlere yalnızca FILE ayrıcalığına sahip kullanıcılar izin verir.
Çalışma zamanında geçerli ayarı görmek için SHOW VARIABLES deyimini kullanın.
MySQL kabuğuna root kullanıcısı olarak giriş yapın
$ mysql -u root -p
Sonra aşağıdaki komutu çalıştırın
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set
Time: 0.023s
Dizin kümesinin şu şekilde olduğunu görebilirsiniz
secure-file-priv değişken dizininin değiştirilmesi
Bu değer MySQL seçenekler dosyasında [mysqld] bölümü altında değiştirilebilir.
sudo vim /etc/my.cnf
Değişkeni [mysqld] bölümü altında ayarlayın
[mysqld]
secure-file-priv=/mysqlfiles
Ardından yapılandırılmış dizini oluşturun
sudo mkdir /mysqlfiles
sudo chown -R mysql:mysql /mysqlfiles/
Değişikliklerin etkili olması için MySQL hizmetini yeniden başlatın
sudo systemctl restart mysqld
Yeni ayarı onaylamak için tekrar giriş yapın
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+--------------+
| Variable_name | Value |
+------------------+--------------+
| secure_file_priv | /mysqlfiles/ |
+------------------+--------------+
1 row in set (0.00 sec)
Belirtilen yola dışa aktarabileceğimizi doğrulamak için test edelim.
mysql> SELECT * FROM information_schema.processlist into outfile '/tmp/mysql_processes.txt';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
Doğru yola yazmayı tekrar deneyelim.
mysql> SELECT * FROM information_schema.processlist into outfile '/mysqlfiles/mysql_processes.txt';
Query OK, 1 row affected (0.00 sec)
secure-file-priv değişkenini devre dışı bırakma
Devre dışı bırakmak için değişkeni NULL değerine ayarlayın.
[mysqld]
secure-file-priv = ""
mysqld hizmetini yeniden başlat
sudo systemctl restart mysqld
Hizmeti yeniden başlattıktan sonra onaylayın
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_file_priv | |
+------------------+-------+
1 row in set (0.00 sec)
SORGU içeriğini farklı bir yola kaydetmeyi deneyin
mysql> SELECT * FROM information_schema.processlist into outfile '/tmp/mysql_processes.txt';
Query OK, 1 row affected (0.00 sec)
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.