MySQLデータベースを非rootとして初期化し、テスト用にSQLサーバーを実行します。


3

私はいくつかのMySQL固有のテストを行いたいと思い、root以外のユーザーとして新しいMySQLデータベースを実行する必要があります。私はDebian Linuxを使用しています。 mysql_install_db 正しいオプションと書き込み可能な場所を持つ通常のユーザーとしての他のコマンド。

  1. これは機能しますか?

  2. どうやってするの?

MySQLのWebサイトからソフトウェアをダウンロードしたくありません。代わりに、すでにインストールされているOSパッケージによって提供されている実行可能ファイルを使用したいと思います。推論はこれです:

  1. そのソフトウェアは既にインストールされています - ネットから新しいソフトウェアをインストールするのは無意味で、時間がかかり、失敗する可能性があり、おそらくセキュリティ上のリスクなどを招く可能性があります。

  2. それが結局うまくいくならば、私はテストをあらゆるコンピュータで動く携帯用のスクリプトで包みたいです。 mysql_install_db などあります。

チュートリアル/ヒントをウェブで検索しましたが、ソフトウェアを最初からインストールする方法についての説明がたくさん見つかりました。私が読んだものからの情報で、私は次にこれを試しました:

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

しかしそれは不満を言う:

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

更新: 私はまだ出力をエラーメッセージに制限する解決策を見つけられませんでした。タグ付きの行数が多い [Note] デバッグ出力レベルを設定する引数が見つかりませんでした。


私は私の信念のもとにAkonadi FAQを見つけました。 稼働中のMySQLサーバーが必要ですか? そしておそらく関連するソースコードは src / server / storage / dbconfigmysql.cpp
Daniel Böhmer

何がありますか /home/daniel/tmp/mysql/mysql/bin このプロセスの始めに?なに?
Michael - sqlbot

@ Michael-sqlbot:ディレクトリ bin そして extra 存在しません。作成したディレクトリを反映するように質問を更新しました。ご覧のとおり、私はそれらをゼロから作成しました。彼らは空です。
Daniel Böhmer

回答:


0

私はAkonadiコードで同様の呼び出しを見つけ、それぞれのヘルプテキストを調べながら、最初からコマンドを作成し始めました。私は前に無駄な/逆効果のオプションを含めたようです。これは今私のために働きました:

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

データ用に1つのディレクトリしか必要ないようです。設定 basedir 完全なMySQLインストールを提供した場合にのみ機能します。

この後、私はMySQLサーバを走らせることができました:

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.