看来在 Ubuntu 14.04 机器上,用户mysql
无法访问任何东西。它既没有写入日志,也没有读取文件。见证:
- bruno():mysql$ cat /etc/passwd | grep mysql
mysql:x:116:127:MySQL Server,,,:/nonexistent:/bin/false
- bruno():mysql$ sudo mysql_install_db
Installing MySQL system tables...
140818 18:16:50 [ERROR] Can't read from messagefile '/usr/share/mysql/english/errmsg.sys'
140818 18:16:50 [ERROR] Aborting
140818 18:16:50 [Note]
Installation of system tables failed! Examine the logs in
/var/lib/mysql for more information.
...boilerplate trimmed...
- bruno():mysql$ ls -la /usr/share/mysql/english/errmsg.sys
-rw-r--r-- 1 root root 59535 Jul 29 13:40 /usr/share/mysql/english/errmsg.sys
- bruno():mysql$ wc -l /usr/share/mysql/english/errmsg.sys
16 /usr/share/mysql/english/errmsg.sys
这里我们看到,虽然权限开放,但mysql
无法读取,而实际上普通登录用户可以读取该文件(使用)。此外,MySQL 不会写入任何日志:/usr/share/mysql/english/errmsg.sys
wc
- bruno():mysql$ ls -la /var/log/mysql
total 8
drwxr-s--- 2 mysql adm 4096 Aug 18 16:10 .
drwxrwxr-x 18 root syslog 4096 Aug 18 16:10 ..
什么原因可能导致该用户无法访问任何内容?我能做什么呢?
答案1
mysql_install_db --no-defaults --basedir=<your base dir> --datadir=<your data dir> --language=<your language dir such as /usr/share/mysql/english/> --lc-messages-dir=<location>
请尝试按上述方法运行,并确保 mysql 对每个文件夹都有正确的权限。她的是参考https://dev.mysql.com/doc/refman/5.7/en/mysql-install-db.html和https://dev.mysql.com/doc/refman/5.7/en/error-message-language.html
答案2
因此,我重新启动旧的 MYSQL 服务器后就出现了这个错误,因为文件 errmsg.sys 被删除了。
要修复此问题,您需要有一个与 MySQL 所需格式完全匹配的 errmsg.sys 文件(我们使用了备份)。错误消息可能意味着某些变量无法初始化。