将MySQL数据库初始化为非root用户并运行SQL Server进行测试


2

我想进行一些特定于MySQL的测试,并且需要以非root用户身份运行新的MySQL数据库。我使用的是Debian Linux,希望人们可以mysql_install_db使用正确的选项和可写位置以普通用户身份启动和其他命令。

  1. 这样行吗?

  2. 怎么做?

我不想从MySQL网站下载软件。相反,我想使用已经安装的OS软件包提供的可执行文件。原因是这样的:

  1. 该软件已经安装完毕,从网络上安装新软件毫无意义,缓慢,可能会失败,甚至可能带来安全风险等。据我所知,KDE正在对其数据存储进行类似的操作。

  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]但是没有找到设置调试输出级别的参数。


我在“ 是否需要运行的MySQL服务器”下找到了Akonadi常见问题解答的信源可能是src / server / storage / dbconfigmysql.cpp中
DanielBöhmer16年

是什么在/home/daniel/tmp/mysql/mysql/bin这个过程的开始?什么?
Michael-sqlbot

@迈克尔- sqlbot:这些目录binextra不存在。我更新了问题以反映我创建的目录。如您所见,我是从头开始创建它们的。他们是空的。
DanielBöhmer'16

Answers:


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.