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并且您将能够进一步调试。