0
点赞
收藏
分享

微信扫一扫

auto


我的mysql总是启动不了

一、无法访问系统资源

MySQL不能访问启动需要的资源是造成而MySQL无法启动的一个常见原因,如:文件,端口等。由于linux中用于启动mysqld进程的mysql用户通常是不能登陆的,可以使用类似下面的命令检查文件的访问权限。

sudo-umysqltouch/var/lib/mysql/b

找出问题后,修改对应文件或目录的权限或属主后通常可以解决问题。但有时mysql用户有访问文件和目录的权限,但仍然会被拒绝访问,例如下面这个例子:

mysql>systemsudo-umysqltouch/home/mysql/data/a

mysql>createtablet1(

idintprimarykey,nvarchar(10

)datadirectory

ERROR1030(HY000):Goterror168fromstorageengine

测试说明mysql用户有这个目录的访问权限,但创建文件还是失败,这种情况让很多人困惑,这个时候通常是mysqld进程的访问被linux的selinux或apparmor给阻止了,大家可以看到创建的表不是在mysql的默认目录下面,因此selinux或apparmor的policy里面没有包含这个目录的访问权限,此时只要对应的修改policy就行了,当然把selinux或apparmor停了也行。

有时虽然对系统资源有访问的权限,但系统资源已经被占用:

mysqld--no-defaults--console--usermysql

2020-11-03T03:36:07.519419Z0[System][MY-010116][Server]/usr/sbin/mysqld(mysqld8.0.19)startingasprocess21171

2020-11-03T03:36:07.740347Z1[ERROR][MY-012574][InnoDB]Unabletolock./ibdata1error:11

这个故障产生的原因是另外一个mysqld进程已经启动并占用了对应的文件。

二、参数设置错误

参数设置错误造成MySQL无法启动的原因也非常常见,此时先要检查MySQL启动时会调用的参数,下面的命令可以查询MySQL启动时调用参数文件的顺序:

$mysqld--verbose--help|grep"Defaultoptions"-A1

Defaultoptionsarereadfromthefollowingfilesinthegivenorder:

/etc/my.cnf/etc/mysql/my.cnf~/.my.cnf

知道了MySQL参数文件的调用顺序,我们就可以检查对应的参数文件,找出其中的错误,如果觉得参数文件的可读性不强,可以使用下面的命令显示mysqld程序将要调用的参数:

$mysqld--print-defaults

/usr/sbin/mysqldwouldhavebeenstartedwiththefollowingarguments:

......

注意这个命令显示完参数后就退出,不会真正运行mysqld。这个命令和my_print_defaultsmysqld完全是等价的,只不过后者的显示方式是一行一个参数。

然后开始对可疑的参数进行调试,我个人喜欢加的参数和顺序如下:

1.在mysqld后加上第一个参数--no-defaults,这个参数的作用是通知mysqld在启动的时候不要读任何参数文件;

2.第二个参数是--console,这个参数会把错误信息输出到屏幕上,这个参数带来的一个弊端是所有的信息都输出到屏幕上,让屏幕显得比较乱,但对于我们调试却是很方便的;

3.第三个参数是--log-error-verbosity=3,这个参数会显示详细的日志;

4.然后再在后面加上有把握的参数,可以一次只加一个参数,然后启动mysqld,采用排除法逐步找出错误的参数。

本回答由网友推荐

mysql 数据库无法启动

把启动类型改为手动就OK了,现在是自动启动打开自己的服务器(我的是VPS),然后选择【我的电脑】,右键,选择【管理】在【管理】界面下,找到【本地用户和组】,选择【用户】,然后在【用户】中找到【MYSQL】用户。选择【MYSQL】用户,然后右键,选择【设置密码】,然后会弹出一个输入对话框,输入新密码和确认密码,然后【确定】。做完以上的之后,同样在【管理】界面下,找到【服务和应用程序】,然后选择【服务】,找到【MYSQL】服务选项。在【MYSQL】服务选项中右键,选择【属性】,然后会弹出一个对话框。这时,选择【登陆】选项卡。然后把刚刚更改的密码输入进行然后确定就可以了。最后,返回【服务】界面,在【MYSQL】服务选项中右键,选择【启动】。移除当前使用的 redo log 文件,然后可以试着启动数据库,结果启动失败![ERROR] InnoDB: Page [page id: space=0, page number=0] log sequence number 178377412422 is in the future! Current system log sequence number 165909011496.这样的错误,这是因为 MySQL writer 线程按照配置的时间间隔以 page 为单位刷新 buffer 数据到磁盘。当数据刷新到磁盘的时候,新写入磁盘的 page 包含了较新的 LSN,此时系统 system 表空间头的 LSN 并没有同步更新,通常这是检查点线程的工作。在正常的崩溃恢复中,MySQL 可以借助 redo log 来进行前滚和回滚,但是此时 redo log 已经被我们删掉了,MySQL 无法进行恢复操作。此时,我们设置 innodb_force_recovery=3 来强制启动 MySQL,仍然启动不成功,改成 4 后启动了!再使用 mysqldump 导出备份,结果噩梦又降临了!MySQL 又 crash 了。InnDB: Failed to find tablespace for table......设置参数 innodb_force_recovery=5,数据库仍然启动失败,再设置成 6,启动成功!用 sqldump 顺利把数据备份出来了!再初始化数据库,把刚刚备份的数据库导入,数据库恢复成功完成!这里的关键是设置 innodb_force_recovery 参数,对应这个参数的说明如下:1. SRV_FORCE_IGNORE_CORRUPT:忽略检查到的 corrupt 页;2. SRV_FORCE_NO_BACKGROUND:阻止主线程的运行,如主线程需要执行 full purge 操作,会导致 crash;3. SRV_FORCE_NO_TRX_UNDO:不执行事务回滚操作;4. SRV_FORCE_NO_IBUF_MERGE:不执行插入缓冲的合并操作;5. SRV_FORCE_NO_UNDO_LOG_SCAN:不查看重做日志,InnoDB 存储引擎会将未提交的事务视为已提交;6. SRV_FORCE_NO_LOG_REDO:不执行前滚的操作。启动提示什么啊

Mysql5.7为什么无法启动?请大家帮忙

方法/步骤

解压MySQL压缩包到硬盘位置,如:C:\MySQL

配置环境变量:

将“C:\MySQL;”加入到环境变量Path中

重命名my-default.ini为my.ini

修改my.ini内容:

basedir =C:\MySQL

datadir =D:\MySQL_Data

port =3306

server_id =10

basedir是程序存放目录

datadir是数据库文件存放目录

port端口号,默认为3306

启动CMD,将工作目录调置到C:\MySQL\bin

安装MySQL为服务,并指定配置文件位置

mysqld -install MySQL --defaults-file="C:\MySQL\my.ini"

对于5.7.12版本来说,如果此时执行net start mysql命令启动服务,则会自动初始化,有可能配置成功,但大多数情况下可能会出现服务无法启动,没关系,使初始化命令进行初始化。

初使化之前请清空D:\MySQL_Data内的文件,执行初使化命令:

mysqld --initialize --user=mysql --console

执行完后CMD控制台上会显示一大堆英文,没关系,大至是说配置文件中缺少一些参数。后期修改my.ini。

启动服务:

net start mysql

服务成功启动。

其它一些可能会用到的命令:

net stop mysql//停止名为mysql的服务

mysqld remove mysql//删除名为mysql的服务使用管理员打开命令行

解压后查看mysql文件夹内,是否包含data文件夹

如果没有,进入bin目录执行mysqld --initialize-insecure --user=mysql

复制my-default.ini为my.ini

basedir = e:/mysql-5.7.16-winx64

datadir = e:/mysql-5.7.16-winx64/data

在环境变量path最后添加e:/tools/mysql-5.7.16-winx64/bin

命令行输入mysqld -install 注册服务

net start mysql 启动服务!

mysql无法启动

在本地计算机无法启动MYSQL服务错误1067进程意外终止 这种情况一般是my.ini文件配置出错了,

你可以删除系统目录下的my.ini文件,

把下面的内容重新写入my.ini文件试试,

要适当地改写一下文件路径

我的my.ini 2007年12月31日

[WinMySQLAdmin]

Server=C:/MYSQL/mysql/bin/mysqld-opt.exe

user=root

[mysqld]

basedir=C:/MYSQL/mysql

datadir=C:/MYSQL/mysql/data

#bind-address=192.168.0.2

#language=D:/MYSQL/share/chinese

===========================================

[WinMySQLAdmin]

Server=D:/MYSQL/bin/mysqld-opt.exe

user=root

[mysqld]

basedir=D:/MYSQL

datadir=D:/MYSQL/data

#bind-address=192.168.0.2

#language=D:/MYSQL/share/chinese

============================================

查找Windows目录下的my.ini文件,编辑内容(如果没有该文件,则新建一个),至少包含basedir,datadir这两个基本的配置。

[mysqld]

# set basedir to installation path, e.g., c:/mysql

# 设置为MYSQL的安装目录

basedir=D:/www/WebServer/MySQL

# set datadir to location of data directory,

# e.g., c:/mysql/data

# 设置为MYSQL的数据目录

datadir=D:/www/WebServer/MySQL/data

另外,要注意:

[WinMySQLadmin]

Server=D:/www/WebServer/MySQL/bin/mysqld-nt.exe

user=root

password=xxxxxxxx

#以上是设置WinMySQLadmin的配置

[Client]

user=root

password=xxxxxxxx

将Mysql添加到Windows系统服务中:

1.、 安装服务。

在Windows2000下,安装完成后,并没有把MySQL安装成服务,我们必须执行下面的语句把MySQL注册为服务:installdir\mysql\bin\mysqld-nt –-install。

Windows98下没有服务的概念,所以不用安装服务。

2.、 启动服务

在Windows2000下,安装服务后可以启动MySQL服务:net start mysql。

在Windows98下,可以用下面的命令启动服务:c:\mysql\bin\mysqld,服务启动后在后台运行,并没有界面。

3.、 停止服务

在Windows2000下,可以通过下面的命令停止MySQL服务:net stop mysql。

在Windows98下,可以通过下面命令停止服务:C:\> C:\mysql\bin\mysqladmin -u root shutdown

打字不易,如满意,望采纳。1.重新装载一个mysql路径

/*如果是rpm包安装的,可以这样卸载:rmp -e mysql 如果是原代码编译安装的,直接删除安装目录就可以了使用#rpm -e --nodeps mysql,其余的用#rpm -e mysql-version

*.tar.gz/*.tgz、*.bz2形式的源代码软件包

安装:tarzxvf*.tar.gz或taryxvf*.bz2先解压

然后进入解压后的目录:

./configure配置

make编译

makeinstall安装

卸载:makeuninstall或手动删除

说明:建议解压后先阅读说明文件,可以了解安装有哪些需求,有必要时还需改动编译配置。有些软件包的源代码在编译安装后可以用makeinstall命令来进行卸载,如果不提供此功能,则软件的卸载必须手动删除。由于软件可能将文件分散地安装在系统的多个目录中,往往很难把它删除干净,那你应该在编译前进行配置,指定软件将要安装到目标路径:./configure--prefix=目录名,这样可以使用“rm-rf软件目录名”命令来进行干净彻底的卸载。

许多人不希望使用linuxmysql、apache、php软件工具,但是在安装新版本时系统错误,主要原因时,安装前因卸载linux自带mysql、apache、php服务及软件工具。

卸载步骤如下:

卸载mysql[root@yourdomainname/]# rpm -qa | grep mysql

mysql-3.23.58-9

php-mysql-4.3.4-11

mod_auth_mysql-20030510-4.1

mysql-server-3.23.58-9

说明:rpm –qa | grep mysql 命令是为了把mysql相关的包都列出来,我上面的例子是fedora core2默认安装mysql的rpm软件包列表,如果是别的linux版本列出来的列表有可能会不一样,不过不用担心,不管是什么,卸载都从最下面的一个包开始,直到卸载掉第一个为止。

比如:在这个例子中,我们应该先卸载mysql-server-3.23.58-9 方法如下:

rpm –e mysql-server

说明:rpm –e 是卸载rpm包的命令,后面是包名称,最后的版本号是不用打的,比如我们下一步卸载mod_auth_mysql-20030510-4.1包,方法如下:

rpm –e mod_auth_mysql

举报

相关推荐

java auto类型

auto_

auto与decltype用法

Auto Layout (3)

0 条评论