繁体   English   中英

在Ubuntu 14.04上与MySQL一起安装后无法启动MariaDB

[英]Cannot start MariaDB after installing alongside MySQL on Ubuntu 14.04

我按照mariadb.com上的官方说明逐行安装了MariaDB 10.0.14。

我正在运行Ubuntu 14.04(从12.04升级)并且已经安装了MySQL服务器。 当我尝试运行mariadb时,我首先停止MySQL服务:

$ sudo /etc/init.d/mysql stop
$ sudo /etc/init.d/mariadb start

但没有任何反应。 显然无法创建mariadb.sock:

$ mysql -e "SELECT VERSION();" --socket=/opt/mariadb-data/mariadb.sock    
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/mariadb-data/mariadb.sock' (111)


我的错误日志是:

141112 13:50:37 mysqld_safe Starting mysqld daemon with databases from /opt/mariadb-data    
141112 13:50:37 [Note] Server socket created on IP: '::'.
141112 13:50:37 [ERROR] mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 13 "Permission denied")
141112 13:50:37 [ERROR] Can't start server: can't create PID file: Permission denied
141112 13:50:37 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended


我无法理解为什么在启动服务时我被拒绝了权限。 我已经创建了新的系统组和用户,都称为mariadb,应该按照说明中的说明处理。

也许我应该为我的/ opt / mariadb-data目录授予完整的r / w权限,但我不确定这是一个好方法。 我该怎么办?

虽然@ hartmut-holzgraefe在他的回答中提供了一个很好的解决方案,但我决定尝试不同的方法。 由于它的工作非常好并独立于我的MySQL服务器,我想我也可以与大家分享。

与使用MariaDB( tutum / mariadb )的Docker容器相比,试图将其与MySQL一起安装更快,也许更干净。

脚步

通过docker运行mariadb的步骤是:

  1. 安装Docker
  2. 从tutum-docker-mariadb中拉出你想要的任何版本的MariaDB(在我的情况下为10.1)
  3. 构建映像并运行它以设置容器


命令

第3步的命令列在repo的自述文件中。 我只会提到您可能希望明确预设机器的主机名和端口,如下所示:

# build the image
docker build -t tutum/mariadb .

# run it
docker run -d -p 127.0.0.1:3307:3306 -e MARIADB_PASS="mypass" tutum/mariadb

# connect to mariadb
mysql -uadmin -pmypass -h127.0.0.1 -P3307


  • admin是使用容器的初始运行创建的默认用户
  • mypass是一个自定义传递来覆盖最初生成的随机密码(否则你必须使用docker日志来获取它)
  • 127.0.0.1:3307:3306表示您将容器内的3306端口与localhost上的3307端口绑定。

你确定你正确地应用了/etc/init.d/mariadb的--defaults-file = / opt / mariadb-data / my.cnf修改吗?

问题是mysqld仍然试图在/ var / run / mysql中创建.pid文件,而不是在/ opt / mariadb下创建.pid文件。 / var / run / mysql目录属于“mysql”系统用户,而不是您根据说明创建的“mariadb”用户。

并且/ var / run / mysql设置只能来自系统/etc/mysql/my.cnf文件,默认情况下由mysqld_safe / mysqld读取, 除非这被--de​​faults-file = ...覆盖。

另请注意--defaults-file需要是第一个命令行选项

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM