mysql - MySQL v5.7.11安装编译后报错

标签 mysql macos file-permissions

在从源代码编译安装后尝试启动 mysql 服务器时,我在 MAC OS X 10.11 中遇到以下错误。 keyring_file 不可读。

我尝试使用以下命令启动服务器。

./mysqld start

在终端中产生以下错误。

2016-03-24T18:43:50.591772Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-03-24T18:43:50.592053Z 0 [Warning] Insecure configuration for --secure-file-priv: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path.
2016-03-24T18:43:50.592091Z 0 [Note] ./mysqld (mysqld 5.7.11) starting as process 3470 ...
2016-03-24T18:43:50.593833Z 0 [Warning] Can't create test file /usr/local/mysql/data/Hemens-MacBook-Pro-2.lower-test
2016-03-24T18:43:50.593852Z 0 [Warning] Can't create test file /usr/local/mysql/data/Hemens-MacBook-Pro-2.lower-test
2016-03-24T18:43:50.595428Z 0 [ERROR] Plugin keyring_file reported: 'keyring_file initialization failure. Please check if the keyring_file_data points to readable keyring file or keyring file can be created in the specified location. The keyring_file will stay unusable until correct path to the keyring file gets provided'
2016-03-24T18:43:50.595860Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-03-24T18:43:50.595866Z 0 [Note] InnoDB: Uses event mutexes
2016-03-24T18:43:50.595881Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2016-03-24T18:43:50.595884Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
2016-03-24T18:43:50.596157Z 0 [Note] InnoDB: Number of pools: 1
2016-03-24T18:43:50.596319Z 0 [Note] InnoDB: Using CPU crc32 instructions
2016-03-24T18:43:50.605257Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2016-03-24T18:43:50.615154Z 0 [Note] InnoDB: Completed initialization of buffer pool
2016-03-24T18:43:50.631296Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
2016-03-24T18:43:50.638315Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2016-03-24T18:43:50.638358Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation.
2016-03-24T18:43:50.638364Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory.
2016-03-24T18:43:50.638369Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation.
2016-03-24T18:43:50.638373Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory.
2016-03-24T18:43:50.638377Z 0 [ERROR] InnoDB: Cannot open datafile './ibtmp1'
2016-03-24T18:43:50.638381Z 0 [ERROR] InnoDB: Unable to create the shared innodb_temporary
2016-03-24T18:43:50.638385Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Cannot open a file
2016-03-24T18:43:50.954042Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2016-03-24T18:43:50.954098Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2016-03-24T18:43:50.954119Z 0 [ERROR] Failed to initialize plugins.
2016-03-24T18:43:50.954126Z 0 [ERROR] Aborting

2016-03-24T18:43:50.954141Z 0 [Note] Binlog end
2016-03-24T18:43:50.954223Z 0 [Note] Shutting down plugin 'CSV'
2016-03-24T18:43:50.954232Z 0 [Note] Shutting down plugin 'keyring_file'
2016-03-24T18:43:50.954507Z 0 [Note] ./mysqld: Shutdown complete

最佳答案

如果您检查 keyring_file_data mysql manual entry您将看到此选项的含义:

The path name of the data file used for secure data storage by the keyring_file plugin. The file location should be in a directory considered for use only by the keyring_file plugin. For example, do not locate the file under the data directory.

Do not use the same keyring_file data file for multiple MySQL instances. Each instance should have its own unique data file.

The default file name is keyring, located in a directory that is platform specific and depends on the value of the INSTALL_LAYOUT CMake option, as shown in the following table. To specify the default directory for the file explicitly if you are building from source, use the INSTALL_MYSQLKEYRINGDIR CMake option.

您还将看到各种 Linux 发行版如何处理它的默认值。

/var/lib/mysql-keyring/keyring

所以答案应该是忽略是安全的。然而,如果您希望 innodb 文件加密 my.cnf 应该看起来像这样:

[mysqld]
keyring_file_data = /var/lib/mysql-keyring/keyring

但是这可能无法解决您的问题。

  1. 这个问题不属于 stackoverflow 而可能是 serverfault。
  2. 这是权限问题。您是否将 mysql 数据目录更改为运行 mysqld 的用户?

关于mysql - MySQL v5.7.11安装编译后报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36207956/

相关文章:

python - 如何在不使用 `osascript` 的情况下在 Python 中获取 macOS 启动驱动器的名称?

macos - OSX 10.6 上的 Qt5

linux - "ls"权限被拒绝,即使我对该目录具有读取权限

bash - 如何检查给定目录是否可访问?

mysql - 如何创建游标循环,使其循环 X 次,并与列中的数据连接

mysql - System.IO.FileNotFoundException : Could not load file or assembly 'MySql. 数据,版本=6.8.3.0

linux - 提取压缩的 tar 文件时是否需要指定压缩级别?

java.nio.file.Files.setOwner() 不允许

mysql - 是否可以使用 dotnet core、MySQL 以及身份验证和授权来构建 Web Api 应用程序?

php - 在 Laravel 中使用 MySQL 枚举的菜单下拉