删除./mysql/var下的所有数据后,怎么重新安装初始数据库?
(1)进入./mysql/bin目录下,执行脚本./mysql_install_db;
(2)执行完(1)后,此时会在./mysql/var目录下创建两个目录文件mysql、test;
(3)修改mysql、test两个目录及目录下所有文件的权限:chown mysql:mysql -R mysql test,注意这里一定要加上-R参数,否则启动会报错;
(4)进入./mysql/bin启动:./mysqld_safe --user=mysql &
该操作流程中出现过的问题及原因分析:
(1)执行./mysql_install_db报错
Installing MySQL system tables...
100309 17:49:10 [ERROR] /usr/local/mysql/libexec/mysqld: unknown option '--innodb_file_per_table'
100309 17:49:10 [ERROR] Aborting
错误原因:配置文件/etc/my.cnf中添加了参数innodb_file_per_table,而此参数mysql初始安装还不支持,所以报错。
解决方法:将其从配置文件中屏蔽掉即可。
(2)执行./mysql_install_db成功后,启动时报错
100309 17:51:58 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
^G/usr/local/mysql/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
100309 17:51:58 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
100309 17:51:58 [ERROR] /usr/local/mysql/libexec/mysqld: unknown option '--innodb_file_per_table'
100309 17:51:58 [ERROR] Aborting
错误原因:使用perror 13,打印出的错误信息为:OS error code 13: Permission denied。
解决方法:查看安装上的mysql文件权限均为root权限,执行./mysqld_safe --user=mysql &启动命令,显然mysql用户没有权限去读取./mysql/plugin.frm文件,所以要对已经安装上的所有文件权限做调整:chown mysql:mysql -R mysql test.(注意这里一定要加上-R参数,否则目录内的文件权限没有修改,再次启动还会报错的)
(3)启动报错
100309 17:59:33 mysqld_safe mysqld from pid file /usr/local/mysql/var/localhost.localdomain.pid ended
100309 17:59:53 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
100309 17:59:53 [ERROR] Unknown/unsupported table type: innodb
100309 17:59:53 [ERROR] Aborting
错误原因:错误很明显,在当前的数据库中还不支持innodb引擎(我在配置文件中添加了参数--default-storage- engine=innodb)。造成这个问题的主要原因是我在最初编译MySQL数据库时没有将innodb添加进去,所以这里找不到该引擎。
解决方法:先将配置文件中的参数--default-storage-engine参数注释掉,正常启动并登入后执行插入引擎的命令:install plugin innodb soname 'ha_innodb.so';(uninstall plugin innodb)
(4)uninstall plugin innodb后给出warning:Plugin is busy and will be uninstalled on shutdown
在热拔出innodb引擎时 ,mysql会去检查该引擎是否处于使用状态。因为我在存储过程中添加了参数default-storage-engine=innodb,所以给出上述提示。在exit登出系统再登入,执行show engines命令,此时报出如下错误:
mysql> show engines;
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> 100309 18:14:21 mysqld_safe Number of processes running now: 0
100309 18:14:21 mysqld_safe mysqld restarted
100309 18:14:21 mysqld_safe mysqld from pid file /usr/local/mysql/var/localhost.localdomain.pid ended
查看错误日志:
00309 18:28:03 - mysqld got signal 11 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.
key_buffer_size=16777216
read_buffer_size=258048
max_used_connections=1
max_threads=151
threads_connected=1
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 132701 K
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
thd: 0x884b968
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0xb3f9f3a4 thread_stack 0x30000
/usr/local/mysql/libexec/mysqld(my_print_stacktrace+0x22) [0x838f1f2]
/usr/local/mysql/libexec/mysqld(handle_segfault+0x37f) [0x81af04f]
[0xb7f23420]
/usr/local/mysql/libexec/mysqld [0x82c49a7]
/usr/local/mysql/libexec/mysqld(plugin_foreach_with_mask(THD*, char (*)(THD*, st_plugin_int*, void*), int, unsigned int, void*)+0xd9) [0x8317a39]
/usr/local/mysql/libexec/mysqld(fill_schema_engines(THD*, TABLE_LIST*, Item*)+0x33) [0x82b8873]
/usr/local/mysql/libexec/mysqld(get_schema_tables_result(JOIN*, enum_schema_table_state)+0x1ce) [0x82b8a8e]
/usr/local/mysql/libexec/mysqld(JOIN::exec()+0x455) [0x822fc35]
/usr/local/mysql/libexec/mysqld(mysql_select(THD*, Item***, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*)+0x158) [0x82320d8]
/usr/local/mysql/libexec/mysqld(handle_select(THD*, st_lex*, select_result*, unsigned long)+0x15d) [0x8232a3d]
/usr/local/mysql/libexec/mysqld [0x81ba660]
/usr/local/mysql/libexec/mysqld(mysql_execute_command(THD*)+0x5d40) [0x81c3fd0]
/usr/local/mysql/libexec/mysqld(mysql_parse(THD*, char const*, unsigned int, char const**)+0x208) [0x81c8048]
/usr/local/mysql/libexec/mysqld(dispatch_command(enum_server_command, THD*, char*, unsigned int)+0xd1b) [0x81c8d6b]
/usr/local/mysql/libexec/mysqld(do_command(THD*)+0xe1) [0x81c9781]
/usr/local/mysql/libexec/mysqld(handle_one_connection+0x5be) [0x81b7cce]
/lib/libpthread.so.0 [0xb7ef93cb]
/lib/libc.so.6(clone+0x5e) [0xb7cf0e8e]
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort...
thd->query at 0x88916d0 = show engines
thd->thread_id=2
thd->killed=NOT_KILLED
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
100309 18:28:03 mysqld_safe Number of processes running now: 0
100309 18:28:03 mysqld_safe mysqld restarted
100309 18:28:04 [ERROR] Unknown/unsupported table type: innodb
100309 18:28:04 [ERROR] Aborting
可以看到这里show engines成为了一个中断信号11,导致Mysqld重启,又由于my.cnf参数问题,最终导致启动失败。(信号11的出现很有可能是配置文件参数错误,经网络搜索好像说明这也是mysql自身的bug)



本文转自 yubowei 51CTO博客,原文链接:http://blog.51cto.com/samyubw/282973

MySQL重新初始化安装数据库的更多相关文章

  1. 【linux】【mysql】CentOS7安装mysql5.6.26

    http://www.cnblogs.com/dreamhome/p/4716425.html     linux系统CentOS7到http://mirrors.sohu.com/mysql/下载想 ...

  2. 源码安装mysql 5.7.19数据库

    1.系统要求yum install -y cmake make gcc gcc-c++ bison  ncurses ncurses-devel 2.创建用户和组groupadd mysql & ...

  3. windows 系统如何安装 mysql 8.0.15 数据库?

    windows 系统如何安装 mysql 8.0.15 数据库? 1. 下载安装包 下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0. ...

  4. mysql数据库补充知识1 安装数据库破解数据库密码已经创建用户

    一.安装MYSQL数据库 1.yum安装 #二进制rpm包安装 yum -y install mysql-server mysql 2.源码安装   1.解压tar包 cd /software tar ...

  5. 阿里云安装mysql,初始化密码修改

    阿里云服务器,centos7, rpm包安装MySQL,初始化了个奇葩密码 登陆不上, 修改配置文件/etc/my.cnf,在[mysqld]下面添加一行代码:skip-grant-tables se ...

  6. MySQL 8.0安装以及初始化错误解决方法

    MySQL 8.0 安装配置及错误排查 官网下载 CentOS7环境下的具体安装步骤 初始化MySQL发生错误的解决方法 忘记数据库root密码 官网下载 mysql官网下载链接:https://de ...

  7. 在Fedora 20 上安装Mysql并初始化root密码

    [root@localhost ~]# yum -y install community-mysql-server #安装数据库 已加载插件:langpacks, refresh-packagekit ...

  8. Linux下安装Python3的django并配置mysql作为django默认数据库(转载)

    我的操作系统为centos6.5 1  首先选择django要使用什么数据库.django1.10默认数据库为sqlite3,本人想使用mysql数据库,但为了测试方便顺便要安装一下sqlite开发包 ...

  9. [mysql,2018-02-28] bat安装、启动mysql,并创建数据库、表

    @echo off f: cd F:\mysql-win32 @echo off&setlocal enabledelayedexpansion cd bin echo ###### 停止当前 ...

随机推荐

  1. 开学java的初步考试

    //第一个.java文件 package project1; //20183777 温学智 信1805-2 public class ScoreInformation { private String ...

  2. 详解java访问修饰符

    详解java访问修饰符 为了防止初学者看到因为专业的术语而感觉晦涩难懂,我接下来尽量用生动比喻的说法来解释!首先第一点,我们来讲讲什么叫修饰符!看看这个名称,想想他的意思.修饰符!修饰符!,就是用来修 ...

  3. 中阶 d04 xml 概念及使用

    idea新建xml文件https://www.jianshu.com/p/b8aeadae39b0 或https://blog.csdn.net/Hi_Boy_/article/details/804 ...

  4. Python设计模式(11)-状态模式

    # coding=utf-8 # *状态模式:一个方法的判断逻辑太长,就不容易修改.方法过长,其本质就是,# * 就是本类在不同条件下的状态转移.状态模式,就是将这些判断分开到各个能# * 表示当前状 ...

  5. 六、路由详细介绍之动态路由RIP(了解一下就行)

    动态路由分为距离矢量路由(RIP)和链路状态(OSPF和ISIS) 一.离矢量路由协议-RIP RIP协议现在基本上被淘汰. RIP动态路由协议工作原理,如上图: R12中有192.168.1.0和1 ...

  6. 如何配置多个Spring的xml配置文件(多模块配置)

    如何使用多个Spring的xml配置文件(多模块配置) (2009-08-22 13:42:43)   如何使用多个Spring的xml配置文件(多模块配置) 在用Struts Spring Hibe ...

  7. push和appendChild的区别

    概述:绑定事件(push和appendChild用法相似:但是一个是控制数组,一个是控制元素节点)用法:1.数组1的更改后的长度 = 数组1.push();//用来控制数组,在数组最后面插入项,返回数 ...

  8. webWMS开发过程记录(一)- 软件开发的流程

    前言:计划开发一个webWMS,并将开发过程比较完整的记录下来.希望可以完成这个目标 软件开发的流程: 1. 了解该项目的相关概念. 了解所要开发的软件属于什么产品.该产品的基本定义是什么?基本功能模 ...

  9. PHP代码审计(初级篇)

    一.常见的PHP框架 1.zendframwork: (ZF)是Zend公司推出的一套PHP开发框架 功能非常的强大,是一个重量级的框架,ZF 用 100%面向对象编码实现. ZF 的组件结构独一无二 ...

  10. 20200107——记spring的DataSource

    spring项目中总要跟数据库打交道,其中怎么连接数据库的方法都有很多,大概分为3类: 1) 通过JNDI获取应用服务器(如JBOSS, Tomcat) 的数据源 2)  Spring容器中直接配置数 ...