MySQL固有のテストを実行したいので、root以外のユーザーとして新しいMySQLデータベースを実行する必要があります。私はDebianLinuxを使用しており、適切なオプションと書き込み可能な場所を使用して、通常のユーザーとしてmysql_install_db
およびその他のコマンドを開始できると期待しています。
これは機能しますか?
どうやるか?
MySQLのWebサイトからソフトウェアをダウンロードしたくありません。代わりに、すでにインストールされているOSパッケージによって提供される実行可能ファイルを使用したいと思います。理由はこれです:
ソフトウェアはすでにインストールされています。ネットから新しいソフトウェアをインストールするのは無意味で、時間がかかり、失敗する可能性があり、セキュリティリスクなどがあります。私の知る限り、KDEはデータストレージに対して同様のことを行っています。
それが最終的に機能する場合は、mysql_install_db
などが利用可能な任意のコンピューターで実行されるポータブルスクリプトでテストをラップしたいと思います。
チュートリアル/ヒントをWebで検索しましたが、ソフトウェアを最初からインストールする方法についての説明がたくさん見つかりました。私が読んだものからの情報で、私はそれからこれを試しました:
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
PDATE:出力をエラーメッセージに制限するための解決策がまだ見つかりませんでした。タグ[Note]
の行がたくさんありますが、デバッグ出力レベルを設定するための引数が見つかりませんでした。
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