在Mac OS X v10.6 (Snow Leopard)上,启动MySQL会出现以下错误:
服务器退出,没有更新PID文件
文件my.cnf
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K
pid-file=/var/run/mysqld/mysqld.pid
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
我希望这对你有用。
在检查错误日志后,我发现了这个:
120309 17:42:49 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120309 17:42:50 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive
120309 17:42:50 [Warning] You need to use --log-bin to make --binlog-format work.
120309 17:42:50 [Note] Plugin 'FEDERATED' is disabled.
120309 17:42:50 InnoDB: The InnoDB memory heap is disabled
120309 17:42:50 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120309 17:42:50 InnoDB: Compressed tables use zlib 1.2.3
120309 17:42:50 InnoDB: Initializing buffer pool, size = 16.0M
120309 17:42:50 InnoDB: Completed initialization of buffer pool
120309 17:42:50 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name /usr/local/mysql/data/ib_logfile0
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
120309 17:42:50 mysqld_safe mysqld from pid file /usr/local/mysql/data/lu1s.local.pid ended
为了解决这个问题,我给了整个mysql文件夹的所有权:
cd /usr/local
sudo chown mysql mysql
sudo chown mysql mysql-5.5.21-osx10.6-x86_64
sudo chown _mysql mysql
sudo chown _mysql mysql-5.5.21-osx10.6-x86_64
然后(你也可以做命令行),我应用权限(一旦我把所有权给_mysql和mysql用户),从文件夹/usr/local/mysql-5.5.21-osx10.6-x86_64的“获取信息”菜单中的所有附带的文件夹。你不需要把它传给别名,因为它只是一个别名。
文件夹的名称取决于MySQL的安装版本。
请按照brew install mysql的说明安装mysql。
设置数据库以您的用户帐户运行:
对于MySQL 5.x:
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
要在另一个文件夹中设置基表,或者使用不同的用户运行mysqld,请查看mysqld_install_db的帮助:
mysql_install_db --help
查看MySQL文档:
4.4.3 mysql_install_db -初始化MySQL数据目录
2.10.4 MySQL初始帐户安全
对于MySQL 8.x:
unset TMPDIR
mysqld --initialize-insecure --log-error-verbosity --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
确保上面的数据目录/usr/local/var/mysql为空。必要时备份。
例如,要以“mysql”用户运行,你可能需要sudo:
sudo mysql_install_db ...options...
手动启动mysqld:
mysql.server start
注意:如果失败,您可能忘记运行上面的前两个步骤
我使用
全新的MacBook Pro,搭载OS X v10.7.3操作系统。x(狮子)
通过OS X GCC安装程序
我使用Homebrew ('brew install MySQL ')安装MySQL。它安装了几个依赖项,然后安装了MySQL。
当我试着启动它时,
mysql.server start
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/west.local.pid).
我执行这个命令,
/usr/local/Cellar/mysql/5.5.25/scripts/mysql_install_db
和MySQL工作。
请注意,您需要从MySQL目录的顶层运行mysql_install_db(例如,usr/local/Cellar/ MySQL /5.5.25)。直接在/scripts目录中运行它并不能为它提供足够的上下文来运行它。
对我来说,解决方案是覆盖/纠正/etc/my/cnf中的数据目录
我用自述文件中提供的说明从源代码构建MySQL 5.5.27:
# Preconfiguration setup
shell> groupadd mysql
shell> useradd -r -g mysql mysql
# Beginning of source-build specific instructions
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> cmake .
shell> make
shell> make install
# End of source-build specific instructions
# Postinstallation setup
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
# Next command is optional
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
Mysqld_safe在没有解释的情况下自行终止。运行/etc/init.d/mysql.服务器启动导致错误:
服务器退出没有更新PID文件
I noticed something odd in the installation instructions though. It has ownership changed to mysql for the directory "data", but not to "var"; this is unusual because for years I have had to ensure that var directory was mysql writable. So I manually ran chown -R mysql /usr/local/mysql/var and then attempted to start it again. Still no luck. But worse, no .err file in the var dir - it was in the "data" dir! so scripts/mysql_install_db sets up camp in /usr/local/mysql/var, but the rest of the application seems to want to do its work in /usr/local/mysql/data!
所以我只是编辑了/etc/my.cnf,在部分[mysqld]下,我添加了一个指令,显式地将mysql的数据目录指向var(因为我通常期望它是任何方式),这样做之后,mysqld启动得很好。add指令看起来像这样:
数据= /usr/地方/mysql/var
为我工作。希望对你有所帮助。
不知何故,我搞砸了我在Mac OS X v10.11 (El Capitan)上的权限,决定从头开始重新安装MySQL。
我在El Capitan上使用Homebrew,并决定重新安装:
brew uninstall mysql
sudo rm -rf /usr/local/var/mysql
brew install mysql
mysql.server start # ... SUCCESS
新安装的文件权限从_mysql更改为包含我的用户名:
ls -alh /usr/local/var/mysql
drwxr-xr-x 22 lfender admin 748B Mar 22 09:58 .
# ... etc.
在这里发布的一些答案的帮助下,我找到了这个问题
我先跑
sudo -我
所以我有根权限。
然后我删除了xxxx。犯错文件:
Rm -rf /usr/local/mysql/data/xxxx.err
当我在SafeMode中创建MySQL后,
/usr/local/mysql/bin/mysqld_safe开始
它将尝试启动并因为错误而退出…一个新的xxx。Err文件将被创建,你需要读取它来查看错误的原因:
Tail -f /usr/local/mysql/data/mysqld.local.err
在我的情况下,由于某种原因,它在/var/log/文件夹中缺少一些文件夹和文件…所以我创建了两个:
cd /var/log
mkdir mysql
触摸mysql-bin.index
创建新文件后,您需要更改权限:
chown -R _mysql /var/log/mysql
当所有这些步骤都采取后,我的数据库立即开始工作……
关键是要读取错误和日志,并找到错误的地方……
我在重新启动并删除所有*err文件后遇到了这个问题。
我发现/usr/local/etc文件夹中my.cnf.d目录不见了
它创造了它:
mkdir /usr/local/etc/my.cnf.d
我只是复制粘贴了位于/usr/local/etc中的my。cnf。default文件到这个目录。
然后MySQL可以重新启动:
cd /usr/local/var/mysql
mysql.server start
MySQL可以工作。
这招对我很管用:
注意:这是一个硬重新安装。当所有其他选项都用尽时再使用。
在安装了Homebrew的Mac电脑上:
列出运行时存在的所有MySQL实例
brew services
通过运行删除每个实例
brew uninstall <instance_name>
删除/usr/local/var/mysql目录:
rm -rf /usr/local/var/mysql
使用Homebrew重新安装MySQL:
brew install mysql
brew install mysql@<version> #Optional
重新运行mysql。服务器启动:
mysql.server start
如果你的系统有多个版本的MySQL,那么你很可能会遇到这个PID错误:
我们可以从杀死所有MySQL进程开始:
sudo killall mysqld
转到/usr/local,选择你想要的MySQL版本,然后为它提供MySQL权限。在我的情况下,我需要版本8。
sudo chown -R mysql mysql-8.0.21-macos10.15-x86_64
打开/usr/local/mysql-8.0.21-macos10.15-x86_64文件夹,启动SQL server:
sudo。/ mysql。服务器启动(输入您的笔记本电脑密码)
如果它给出下面的输出…PID问题解决了
sudo ./mysql.server start
Starting MySQL
.. SUCCESS!
我必须在安全模式下检查我的错误文件,以找到根本原因:
Rm -f /usr/local/var/mysql/*.err
mysqld_safe开始
猫mysql / * .err
这显示了升级例程中的一个错误。我试着修复它,但我在网上找不到足够的信息。在那之后,我放弃了,并手动导出数据库:
mysql。server start——upgrade=MINIMAL,因此服务器将启动
mysqldump不会工作,因为它会尝试运行完整的升级,但你可以使用Sequel Pro, phpMyAdmin等来导出。
停止服务器,将mysql文件夹重命名为mysql。坏了,并做一个干净的安装,以获得一个新的mysql文件夹。
启动MySQL,手动导入前面导出的.sql文件。
我的回答很不专业,我不理解。我用的是CentOS和通用版的MySQL…当我用root用户启动mysql时,我的问题用——user=root解决了:
/path/to/mysql/support-files/mysql.server start --user=root
如果你正在使用systemctl启动mysql。服务,您需要更改mysql。/etc/systemd/system/mysql.service中的服务文件:
.
.
.
ExecStart=/path/tp/mysql/support-files/mysql.server start --user=root
ExecStop=/path/to/mysql/support-files/mysql.server stop --user=root
.
.
.
这是macOS中MySQL数据库最简单的“PID”错误解决方案:
执行如下命令:
$ sudo mysql.server start
Starting MySQL
.. SUCCESS!
使用此命令访问数据库:
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 8.0.31 Homebrew
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
Database |
information_schema |
mysql |
performance_schema |
sys |
4 rows in set (0.00 sec) |