我的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