我想在 CentOS 上安装 mySQL。
我在那台机器上没有 root 帐户。
如何在 CentOS 上安装 mySQL作为用户即无需 root 身份?
答案1
对于 RPM 软件包(CentOS 肯定是一个 RPM 系统),您需要以 root 身份运行 rpm 安装程序。RPM 安装程序需要写入一些软件包跟踪数据库,而您需要以 root 身份写入它们。好吧,mysql 允许您从 tarball 安装,对吧?(http://dev.mysql.com/doc/refman/5.0/en/binary-installation.html)。嗯,是的,但是您需要运行一个后续安装,并且需要以 root 身份运行。
除了转储文件之外,RPM 还可以有安装前和安装后的步骤。这些步骤可以是更改配置文件、添加/删除用户。通常,您可能需要以 root 身份执行这些操作。即使没有脚本,您通常也会安装到只有 root 才能安装的目录中。
在另一条评论中,您提到了您安装的其他不需要 root 权限的软件包。对于这些软件包,我确信:
- 您是从 tarball 安装的,而不是 RPM 安装。
- 你安装到了非系统目录
- 代码不绑定到任何特定目录(某些代码是针对特定路径编译的)
- 无需后续安装(无需系统配置
/etc
,也不需要像 MySQL 那样的新用户)
答案2
在没有 root 帐户的情况下在 CENTOS 上安装 MYSQL:
- 下载 MySQL 社区服务器 5.5.8 Linux - 通用压缩 TAR 存档 - [请注意,这不是源代码/二进制文件,而是通用 Linux(非 RPM 包)]
- 解压。例如:
/home/martin/mysql
在您的主目录中创建
my.cnf
文件。文件内容应为:[server] user=martin basedir=/home/martin/mysql datadir=/home/martin/sql_data socket=/home/martin/socket port=3666
进入
/home/martin/mysql
目录并执行:./scripts/mysql_install_db --defaults-file=~/my.cnf --user=martin --basedir=/home/martin/mysql --datadir=/home/martin/sql_data --socket=/home/martin/socket
请注意,
--defaults-file
必须是第一个参数,否则它将不起作用!这是 MySQL 的一个错误。您的 MySQL 服务器已准备就绪。使用以下命令启动它:
./bin/mysqld_safe --defaults-file=~/my.cnf &
连接到服务器:
mysql -h 127.0.0.1 -P 3666 -u root -p (using tcp)
或者
mysql --socket=/home/martin/socket -u root -p (using unix socket)
关闭服务器:
mysqladmin -h 127.0.0.1 -P 3666 -u root shutdown(using tcp)
或者
mysqladmin --socket=/home/martin/socket -u root shutdown (using unix socket)
答案3
如果您有可用的编译器,您可以从主目录构建并运行它,但是为了在 Linux 上安装软件,您需要 root 访问权限。
答案4
马丁的回答对我有用。为了回应评论(由于权限问题,我无法发表评论):
要连接到服务器,您需要将 /home/martin/mysql/bin 目录(示例中为 /home/martin/mysql/bin)添加到您的路径中,或者使用完整路径名来运行它:
/home/martin/mysql/bin/mysql --socket=/home/martin/socket -u root -p
另一个缺失的部分是设置 root 密码。执行 bin/mysqld_safe 步骤后(请参阅 Martin 的回复中的步骤 5),MySql 告诉我如何设置 root 密码。您需要执行该步骤,但要在命令行中添加 --socket=/home/martin/socket 选项。