刚刚安装的 MySQL 服务器 5.7.12 无法在 FreeBSD 10.3 上启动

刚刚安装的 MySQL 服务器 5.7.12 无法在 FreeBSD 10.3 上启动
root@w:/var/db#pkg 安装 mysql57-server mysql57-client
正在更新 FreeBSD 存储库目录...
FreeBSD 存储库是最新的。
所有存储库都是最新的。
检查完整性...完成(0 冲突)
以下 6 个软件包将受到影响(共选中 0 个):

要安装的新软件包:
        mysql57-服务器:5.7.12
        mysql57-客户端:5.7.12
        liblz4:131
        libevent2:2.0.22_1
        perl5:5.20.3_12
        自由编辑:3.1.20150325_2

该过程将需要 293 MiB 的更多空间。

是否继续此操作?[y/N]:y
[1/6] 正在安装 liblz4-131...
[1/6] 提取 liblz4-131:100%
[2/6] 正在安装 libevent2-2.0.22_1...
[2/6] 提取 libevent2-2.0.22_1: 100%
[3/6] 正在安装 perl5-5.20.3_12...
[3/6] 提取 perl5-5.20.3_12:100%
[4/6] 正在安装 libedit-3.1.20150325_2...
[4/6] 提取 libedit-3.1.20150325_2: 100%
[5/6] 正在安装 mysql57-client-5.7.12...
[5/6] 提取 mysql57-client-5.7.12: 100%
[6/6] 正在安装 mysql57-server-5.7.12...
===> 创建用户和/或组。
使用现有组‘mysql’。
使用现有用户‘mysql’。
[6/6] 提取 mysql57-server-5.7.12:100%
来自 perl5-5.20.3_12 的消息:
从 Perl 5.20 开始,/usr/bin/perl 符号链接已被删除。
对于 shebang,你应该使用:

/usr/local/bin/perl 的 #!

或者

/usr/bin/env perl #!

第一个只有在你有一个 /usr/local/bin/perl 时才会起作用,
只要 perl 在 PATH 中,第二个方法就会起作用。
来自mysql57-client-5.7.12的消息:
* * * * * * * * * * * * * * * * * * * * * * * *

这是没有服务器的 mysql 客户端。
要获得完整的服务器和客户端,请安装 databases/mysql57-server

* * * * * * * * * * * * * * * * * * * * * * * *
来自 mysql57-server-5.7.12 的消息:
*****************************************************************************

请记住在第一次启动 MySQL 服务器时运行 mysql_upgrade
从早期版本升级后。

首次使用 MySQL 的初始密码保存在 $HOME/.mysql_secret 中
即当您想首先使用“mysql -u root -p”时,您应该看到密码
在/root/.mysql_secret

*****************************************************************************

*****************************************************************************

请记住,my.cnf 的默认位置将被更改
从“/var/db/mysql/my.cnf”到“/usr/local/etc/mysql/my.cnf”
未来。如果你不想将 my.cnf 移动到新位置,那么
您必须将 /etc/rc.conf 中的“mysql_optfile”设置为“/var/db/mysql/my.cnf”。

*****************************************************************************
root@w:/var/db#启动mysql服务器
/usr/local/etc/rc.d/mysql-server: 警告:mysql 的 precmd 例程失败

刚创建的/var/db/mysql是空的。没有生成详细日志。

当我跑步时

root@w:/usr/home#/usr/local/bin/mysqld_safe
2016-05-16T03:54:08.6NZ mysqld_safe 记录到‘/var/db/mysql/w.err’。
2016-05-16T03:54:08.6NZ mysqld_safe 使用 /var/db/mysql 中的数据库启动 mysqld 守护进程
2016-05-16T03:54:30.6NZ mysqld_safe mysqld 来自 pid 文件 /var/db/mysql/w.pid 结束

/var/db/mysql填充了错误日志,内容如下:

root@w:/usr/home# cat /var/db/mysql/w.err
2016-05-16T03:54:08.6NZ mysqld_safe 使用 /var/db/mysql 中的数据库启动 mysqld 守护进程
2016-05-16T03:54:08.544447Z 0 [警告] 无法将 max_open_files 的数量增加到 28782 以上(请求:32929)
2016-05-16T03:54:08.546962Z 0 [警告] 更改的限制:table_open_cache:14310(请求 16384)
2016-05-16T03:54:08.877416Z 0 [警告] 'NO_ZERO_DATE'、'NO_ZERO_IN_DATE' 和 'ERROR_FOR_DIVISION_BY_ZERO' sql 模式应与严格模式一起使用。它们将在未来的版本中与严格模式合并。
2016-05-16T03:54:08.877476Z 0 [警告] 未设置“NO_AUTO_CREATE_USER”sql 模式。
2016-05-16T03:54:08.879883Z 0 [注意] /usr/local/libexec/mysqld (mysqld 5.7.12-log) 作为进程 5817 启动...
2016-05-16T03:54:09.009616Z 0 [注意] InnoDB: 互斥锁和 rw_locks 使用 GCC 原子内置函数
2016-05-16T03:54:09.009717Z 0 [注意] InnoDB: 使用事件互斥
2016-05-16T03:54:09.009740Z 0 [注意] InnoDB: GCC 内置 __atomic_thread_fence() 用于内存屏障
2016-05-16T03:54:09.009760Z 0 [注意] InnoDB:压缩表使用zlib 1.2.8
2016-05-16T03:54:09.010701Z 0 [注意] InnoDB: 池数量:1
2016-05-16T03:54:09.011155Z 0 [注意] InnoDB: 不使用 CPU crc32 指令
2016-05-16T03:54:09.099785Z 0 [注意] InnoDB:初始化缓冲池,总大小 = 128M,实例 = 1,块大小 = 128M
2016-05-16T03:54:09.137209Z 0 [注意] InnoDB: 缓冲池初始化已完成
2016-05-16T03:54:09.155602Z 0 [注意] InnoDB:第一个 innodb_system 数据文件“ibdata1”不存在。将创建一个新的表空间!
2016-05-16T03:54:09.155939Z 0 [注意] InnoDB:将文件 '/var/db/mysql/ibdata1' 大小设置为 128 MB。物理写入文件已满;请等待...
2016-05-16T03:54:09.157965Z 0 [注释] InnoDB:进度(MB):
 100
2016-05-16T03:54:11.334877Z 0 [注意] InnoDB:文件'/var/db/mysql/ibdata1'大小现在为 128 MB。
2016-05-16T03:54:11.336349Z 0 [注意] InnoDB: 将日志文件 /var/db/mysql/ib_logfile101 大小设置为 256 MB
2016-05-16T03:54:11.337459Z 0 [注释] InnoDB:进度(MB):
 100 200
2016-05-16T03:54:18.938775Z 0 [注意] InnoDB: 将日志文件 /var/db/mysql/ib_logfile1 大小设置为 256 MB
2016-05-16T03:54:18.940833Z 0 [注释] InnoDB:进度(MB):
 100 200
2016-05-16T03:54:23.966828Z 0 [注意] InnoDB:将日志文件 /var/db/mysql/ib_logfile101 重命名为 /var/db/mysql/ib_logfile0
2016-05-16T03:54:23.967235Z 0 [警告] InnoDB:已创建新日志文件,LSN = 45790
2016-05-16T03:54:23.967333Z 0 [注意] InnoDB:为临时表创建共享表空间
2016-05-16T03:54:23.967563Z 0 [注意] InnoDB:将文件 '/var/db/mysql/ibtmp1' 大小设置为 128 MB。物理写入文件已满;请等待...
2016-05-16T03:54:23.967885Z 0 [注释] InnoDB:进度(MB):
 100
2016-05-16T03:54:26.098879Z 0 [注意] InnoDB:文件'/var/db/mysql/ibtmp1'大小现在为128 MB。
2016-05-16T03:54:26.099216Z 0 [注意] InnoDB:未找到 Doublewrite 缓冲区:创建新的
2016-05-16T03:54:26.431555Z 0 [注意] InnoDB: 创建了 Doublewrite 缓冲区
2016-05-16T03:54:26.448924Z 0 [注意] InnoDB:找到 96 个重做回滚段。96 个重做回滚段处于活动状态。
2016-05-16T03:54:26.448975Z 0 [注意] InnoDB: 32 个非重做回滚段处于活动状态。
2016-05-16T03:54:26.456331Z 0 [警告] InnoDB:创建外键约束系统表。
2016-05-16T03:54:26.498113Z 0 [注意] InnoDB: 已创建外键约束系统表
2016-05-16T03:54:26.498261Z 0 [注意] InnoDB:创建表空间和数据文件系统表。
2016-05-16T03:54:26.500368Z 0 [注意] InnoDB:已创建表空间和数据文件系统表。
2016-05-16T03:54:26.500416Z 0 [注意] InnoDB:创建 sys_virtual 系统表。
2016-05-16T03:54:26.502198Z 0 [注意] InnoDB:已创建 sys_virtual 表
2016-05-16T03:54:26.502471Z 0 [注意] InnoDB:等待清除开始
2016-05-16T03:54:26.556412Z 0 [注意] InnoDB:5.7.12 已启动;日志序列号 0
2016-05-16T03:54:26.557067Z 0 [注意] InnoDB: page_cleaner: 1000ms 预期循环耗时 17410ms。设置可能不是最佳的。(在此期间,flushed=0 和 evicted=0。)
2016-05-16T03:54:26.573311Z 0 [注意] 插件‘FEDERATED’已被禁用。
mysqld:表‘mysql.plugin’不存在
2016-05-16T03:54:26.590491Z 0 [错误] 无法打开 mysql.plugin 表。请运行 mysql_upgrade 来创建它。
mysqld:删除‘./auto.cnf’时出错(错误代码:2 - 没有此文件或目录)
2016-05-16T03:54:26.654121Z 0 [警告] 全球可写的配置文件‘./auto.cnf’已被删除。

2016-05-16T03:54:26.654286Z 0 [注意] 对 uuid 生成器变量进行加盐处理,current_pid: 5817,server_start_time: 1463370848,bytes_sent: 0,
2016-05-16T03:54:26.657718Z 0 [注意] 生成的 uuid:'e252a097-1b19-11e6-97db-06754000002e',server_start_time:1637339940989262617,bytes_sent:35009826816
2016-05-16T03:54:26.657779Z 0 [警告] 未找到现有 UUID,因此我们假设这是该服务器首次启动。生成新的 UUID:e252a097-1b19-11e6-97db-06754000002e。
2016-05-16T03:54:26.663993Z 0 [警告] Gtid 表尚未准备好使用。无法打开表“mysql.gtid_executed”。
2016-05-16T03:54:27.860239Z 0 [注意] 自动生成的 SSL 证书放在数据目录中。
2016-05-16T03:54:27.869223Z 0 [警告] CA 证书 ca.pem 是自签名的。
2016-05-16T03:54:28.691388Z 0 [注意] 自动生成的 RSA 密钥文件放在数据目录中。
2016-05-16T03:54:28.693717Z 0 [注意] 服务器主机名(绑定地址):'127.0.0.1';端口:3306
2016-05-16T03:54:28.693842Z 0 [注意] - '127.0.0.1' 解析为 '127.0.0.1';
2016-05-16T03:54:28.695028Z 0 [注意] 在 IP '127.0.0.1' 上创建服务器套接字。
2016-05-16T03:54:28.702943Z 0 [警告] 无法打开优化器成本常量表

2016-05-16T03:54:28.704660Z 0 [错误] 致命错误:无法打开和锁定权限表:表'mysql.user'不存在
2016-05-16T03:54:28.705527Z 0 [错误] 正在中止

2016-05-16T03:54:28.706304Z 0 [注释] Binlog结束
2016-05-16T03:54:28.708768Z 0 [注意] 关闭插件‘ngram’
2016-05-16T03:54:28.708810Z 0 [注意] 关闭插件‘分区’
2016-05-16T03:54:28.708832Z 0 [注意] 关闭插件“BLACKHOLE”
2016-05-16T03:54:28.708850Z 0 [注意] 关闭插件‘ARCHIVE’
2016-05-16T03:54:28.708866Z 0 [注意] 关闭插件‘INNODB_SYS_VIRTUAL’
2016-05-16T03:54:28.708882Z 0 [注意] 关闭插件‘INNODB_SYS_DATAFILES’
2016-05-16T03:54:28.708898Z 0 [注意] 关闭插件‘INNODB_SYS_TABLESPACES’
2016-05-16T03:54:28.708913Z 0 [注意] 关闭插件“INNODB_SYS_FOREIGN_COLS”
2016-05-16T03:54:28.708928Z 0 [注意] 关闭插件‘INNODB_SYS_FOREIGN’
2016-05-16T03:54:28.708943Z 0 [注意] 关闭插件‘INNODB_SYS_FIELDS’
2016-05-16T03:54:28.708959Z 0 [注意] 关闭插件‘INNODB_SYS_COLUMNS’
2016-05-16T03:54:28.708975Z 0 [注意] 关闭插件‘INNODB_SYS_INDEXES’
2016-05-16T03:54:28.708990Z 0 [注意] 关闭插件‘INNODB_SYS_TABLESTATS’
2016-05-16T03:54:28.709005Z 0 [注意] 关闭插件‘INNODB_SYS_TABLES’
2016-05-16T03:54:28.709020Z 0 [注意] 关闭插件‘INNODB_FT_INDEX_TABLE’
2016-05-16T03:54:28.709035Z 0 [注意] 关闭插件‘INNODB_FT_INDEX_CACHE’
2016-05-16T03:54:28.709050Z 0 [注意] 关闭插件‘INNODB_FT_CONFIG’
2016-05-16T03:54:28.709066Z 0 [注意] 关闭插件“INNODB_FT_BEING_DELETED”
2016-05-16T03:54:28.709081Z 0 [注意] 关闭插件“INNODB_FT_DELETED”
2016-05-16T03:54:28.709096Z 0 [注意] 关闭插件“INNODB_FT_DEFAULT_STOPWORD”
2016-05-16T03:54:28.709111Z 0 [注意] 关闭插件‘INNODB_METRICS’
2016-05-16T03:54:28.709126Z 0 [注意] 关闭插件‘INNODB_TEMP_TABLE_INFO’
2016-05-16T03:54:28.709141Z 0 [注意] 关闭插件‘INNODB_BUFFER_POOL_STATS’
2016-05-16T03:54:28.709156Z 0 [注意] 关闭插件‘INNODB_BUFFER_PAGE_LRU’
2016-05-16T03:54:28.709171Z 0 [注意] 关闭插件‘INNODB_BUFFER_PAGE’
2016-05-16T03:54:28.709187Z 0 [注意] 关闭插件“INNODB_CMP_PER_INDEX_RESET”
2016-05-16T03:54:28.709215Z 0 [注意] 关闭插件‘INNODB_CMP_PER_INDEX’
2016-05-16T03:54:28.709238Z 0 [注意] 关闭插件“INNODB_CMPMEM_RESET”
2016-05-16T03:54:28.709255Z 0 [注意] 关闭插件‘INNODB_CMPMEM’
2016-05-16T03:54:28.709271Z 0 [注意] 关闭插件‘INNODB_CMP_RESET’
2016-05-16T03:54:28.709299Z 0 [注意] 关闭插件‘INNODB_CMP’
2016-05-16T03:54:28.709316Z 0 [注意] 关闭插件‘INNODB_LOCK_WAITS’
2016-05-16T03:54:28.709331Z 0 [注意] 关闭插件‘INNODB_LOCKS’
2016-05-16T03:54:28.709346Z 0 [注意] 关闭插件‘INNODB_TRX’
2016-05-16T03:54:28.709362Z 0 [注意] 关闭插件‘InnoDB’
2016-05-16T03:54:28.710173Z 0 [注意] InnoDB: FTS 优化线程退出。
2016-05-16T03:54:28.710419Z 0 [注意] InnoDB: 正在开始关闭...
2016-05-16T03:54:28.817932Z 0 [注意] InnoDB:将缓冲池转储到 /var/db/mysql/ib_buffer_pool
2016-05-16T03:54:28.818265Z 0 [注意] InnoDB:缓冲池转储于 160516 5:54:28 完成
2016-05-16T03:54:30.077783Z 0 [注意] InnoDB:关闭完成;日志序列号 1209970
2016-05-16T03:54:30.078115Z 0 [注意] InnoDB:删除了临时表空间数据文件:“ibtmp1”
2016-05-16T03:54:30.078143Z 0 [注意] 关闭插件‘CSV’
2016-05-16T03:54:30.078170Z 0 [注意] 关闭插件‘MyISAM’
2016-05-16T03:54:30.086964Z 0 [注意] 关闭插件“PERFORMANCE_SCHEMA”
2016-05-16T03:54:30.087053Z 0 [注意] 关闭插件‘MEMORY’
2016-05-16T03:54:30.087084Z 0 [注意] 关闭插件‘MRG_MYISAM’
2016-05-16T03:54:30.087110Z 0 [注意] 关闭插件‘sha256_password’
2016-05-16T03:54:30.087127Z 0 [注意] 关闭插件‘mysql_native_password’
2016-05-16T03:54:30.087338Z 0 [注意] 关闭插件‘binlog’
2016-05-16T03:54:30.094312Z 0 [注意] /usr/local/libexec/mysqld:关闭完成

2016-05-16T03:54:30.6NZ mysqld_safe mysqld 来自 pid 文件 /var/db/mysql/w.pid 结束

我怎样才能解决这个问题?

答案1

日志显示您尚未创建 MySQL 根用户:

2016-05-16T03:54:28.704660Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
2016-05-16T03:54:28.705527Z 0 [ERROR] Aborting

并非所有安装脚本都会自动创建它们。

要创建 root 用户,请运行mysqld --initialize --user=mysql [with random root password]

答案2

首先,删除现有的数据库文件夹:

rm -rf /var/db/mysql

然后,打开/usr/local/etc/rc.d/mysql 服务器脚本以供编辑。

寻找mysql_create_auth_tables()函数。在此函数中,将以下行替换:

eval $mysql_install_db $mysql_install_db_args >/dev/null 2>/dev/null

和:

eval $procname --initialize --basedir=/usr/local --datadir=${mysql_dbdir} --user=${mysql_user} >/dev/null 2>/dev/null

启动 MySQL 服务器:

service mysql-server start

以下是设置 MySQL 根密码的一种方法:

mysql -uroot
GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY 'New_ROOT_Password';
GRANT ALL ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'New_ROOT_Password';
exit

如有任何问题,请评论>/dev/null 2>/dev/null部分。如果没有此日志重定向,mysqld将会吐出已弃用的选项的消息,例如mysql_install_db并且您将能够进一步调试。

相关内容