我想进行一些特定于 MySQL 的测试,需要以非 root 用户身份运行全新的 MySQL 数据库。我使用的是 Debian Linux,希望能够mysql_install_db
以普通用户身份使用正确的选项和可写位置启动和其他命令。
这有用吗?
怎么做?
我不想从 MySQL 网站下载软件。相反,我想使用已安装的 OS 软件包提供的可执行文件。理由如下:
该软件已经安装 - 从网络安装新软件是没有意义的,很慢,可能会失败,可能存在安全风险等。据我所知,KDE 正在为其数据存储做类似的事情。
如果它最终确实起作用,我想将测试包装在一个可移植的脚本中,该脚本可以在任何
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]
,但没有找到设置调试输出级别的参数。
答案1
我在 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