MySQL veritabanını root olmayan olarak başlat ve test için SQL server'ı çalıştır


3

Bazı MySQL'e özgü testler yapmak istiyorum ve yeni bir MySQL veritabanını root olmayan kullanıcı olarak çalıştırmam gerekiyor. Debian Linux kullanıyorum ve birinin başlayabileceğini umuyorum. mysql_install_db ve doğru seçenekleri ve yazılabilir yerleri ile normal kullanıcı olarak diğer komutlar.

  1. Bu çalışıyor mu?

  2. Nasıl yapılır?

MySQL web sitesinden yazılım indirmek istemiyorum. Bunun yerine önceden kurulmuş işletim sistemi paketlerinin sağladığı yürütülebilir dosyaları kullanmak istiyorum. Sebep şudur:

  1. Yazılım zaten kuruludur - ağdan yeni bir yazılım yüklemek anlamsız, yavaş, başarısız olabilir, muhtemelen bir güvenlik riski vb.

  2. Sonunda işe yarıyorsa, testi herhangi bir bilgisayarda çalışan taşınabilir bir betiğe sarmak istiyorum mysql_install_db vb. mevcuttur.

Web'i öğreticiler / ipuçları için aradım ancak yalnızca yazılımı sıfırdan nasıl kuracağınıza dair bir sürü açıklama buldum. Okuduklarımdan gelen bilgilerle şunu denedim:

mkdir ~/tmp/mysql/
mkdir ~/tmp/mysql/mysql/
mkdir ~/tmp/mysql/sql_data/

mysql_install_db \
    --defaults-file=my.cnf
    --user=daniel
    --basedir=/home/daniel/tmp/mysql/mysql/
    --datadir=/home/daniel/tmp/mysql/sql_data/
    --socket=/home/daniel/tmp/mysql/socket

Ancak bu şikayet:

FATAL ERROR: Could not find my_print_defaults

The following directories were searched:

   /home/daniel/tmp/mysql/mysql//bin
   /home/daniel/tmp/mysql/mysql//extra

GÜNCELLEŞTİRME: Çıkışı hata mesajlarıyla sınırlamak için hala bir çözüm bulamadım. Etiketi ile birçok satır olsun [Note] ancak hata ayıklama çıktı seviyesini ayarlamak için bir tartışma bulamadı.


Akonadi SSS bölümüne inancım için kaynak buldum Çalışan bir MySQL sunucusuna ihtiyacım var mı? ve muhtemelen ilgili kaynak kodu src / sunucu / depolama / dbconfigmysql.cpp
Daniel Böhmer

İçindeki nedir /home/daniel/tmp/mysql/mysql/bin Bu sürecin başında? Şey var mı?
Michael - sqlbot

@ Michael-sqlbot: Rehberler bin ve extra yok Hangi dizinleri oluşturduğumu yansıtacak şekilde sorumu güncelledim. Gördüğün gibi ben onları sıfırdan yarattım. Boşlar.
Daniel Böhmer

Yanıtlar:


0

Akonadi kodunda benzer aramalar buldum ve ilgili yardım metinlerine bakarken komutları sıfırdan oluşturmaya başladım. Sanırım daha önce işe yaramaz / üretkenlik seçeneklerini dahil ettim. Bu şimdi benim için çalıştı:

mysql_install_db                    \
  --defaults-file=/dev/null         \ # don't user my.cnf in /etc/ or ~/
  --datadir=/home/daniel/tmp/mysql/ \ # use given directory for data
  --force                             # make mysqld work without /usr/bin/resolveip

Veri için sadece 1 dizine ihtiyacım var. Ayar basedir yalnızca eksiksiz bir MySQL kurulumu sağlarsanız çalışır.

Bundan sonra MySQL sunucusunu çalıştırabilirim:

mysqld                              \
  --defaults-file=/dev/null         \ # as above
  --datadir=/home/daniel/tmp/mysql/ \ # as above
  --socket=/home/daniel/tmp/socket  \ # use writable socket
  --skip-networking                   # for my purposes: only socket connections
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.