十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
工具/原料
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站制作、肥城网络推广、小程序开发、肥城网络营销、肥城企业策划、肥城品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供肥城建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
已经安装了mysql数据库的windows
操作系统
笔者安装的mysql版本为5.6,即mysql
5.6
方法/步骤
首先,需要关闭mysql
server服务。在“运行”窗口,输入“services.msc”,进入“服务”窗口。
在服务窗口,可以找到“mysql56”,选定,将其“停止”即可。
这样,mysql
server服务就停止了。
需要说明的是,这里的“mysql56”受版本限制。举例来说,如果你的mysql的版本是5.1,那么此时就是就是“mysql51”。
当然,也可以在命令行窗口使用“net
stop
mysql56”来停止服务。
接着,需要使用到mysql的安装位置。如果忘记了,可以在“开始”按钮(windows键)找到安装“mysql”文件夹,打开并选择“mysql
server
5.6”文件夹,会看到两个mysql
commond
打开的快捷方式。选择其中的一个查看其属性,就可以找到mysql的安装位置。
可以看到我们的mysql位置在“d:\program
files\mysql”
其实,我们之所以想知道mysql的安装位置,是为了获取其下的.ini文件的位置。该文件记录了mysql的配置信息。如果我们想跳过登录权限,就必须获取该文件的位置。
需要注意的是,不同版本的.ini文件的名称不同,在mysql
5.1时,它是my.ini,而在mysql
5.6则是my-default.ini。
接着,打开命令行窗口,输入如下的命令:
c:\users\wangmysqld
--defaults-file="d:\program
files\mysql\mysql
server
5.6\my-default.ini"
--console
--skip-grant-tables
需要说明的是,此时该窗口不可再写入。这也是检验命令是否正确执行的一个标准。
另外打开一个命令行窗口,输入命令:mysql
-u
root
-p,回车即可进入mysql命令行界面。
7
接下来,只需要修改系统数据库,将密码进行更新即可。
需要使用到的命令是:
mysql-show
database;
mysql-use
mysql
mysql-update
user
set
password=password('12345')
where
user='root';
这样,就将新密码设为了12345。
启动Mysql提示ERROR! The server quit without updating PID file (/usr/local/var/mysql/xxxx.local.pid).
1、查看mysql错误日志:打开/usr/local/var/mysql/xxxx.err或者xxxx.local.err文件。
2、问题应该是某个程序占用了mysql的默认端口3306。
3、查看端口使用情况lsof -i:3306,发现是一个用户名为_mysql启动了mysqld指令占用了3306,感觉现象非常奇怪,不清楚为什么会有这个用户组,为什么会启动mysqld,由于这个电脑是公司其他同事转移资产到的我名下,所以有可能是之前用户或者公司it装了什么服务导致的。
4、首先尝试干掉进程:sudo kill xxxx,结果发现当kill后,还会重新启动。
5、尝试修改mysql默认启动端口,Baidu上有人告诉修改/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist文件
添加string--port=3307/string保存,先重新启动mysql服务,发现问题依然存在,发现配置没有起作用,默认端口依然是3306,然后考虑重新启动电脑,看看是否可以修改占用默认端口的配置。
6、重启后再次查看3306端口占用情况,发现确实不存在了。但是发现启动mysql服务时,依然存在问题:
仔细观察发现,这个占用和plist中的mysql配置一样的,所以可以确定每次启动计算机后,会按默认配置执行一个mysqld。
7、不清楚为什么会按com.oracle.oss.mysql.mysqld.plist配置执行mysqld,于是把注意力放在了Mac启动上。
8、Mac的启动原理是:
看到这里就明白了,原来LaunchDaemons里面放的是Mac启动时的一些启动服务,
9、System/Library和/Library和~/Library目录的区别:
10、System/Library和/Library和~/Library目录的区别:
11、有了上面的结果,于是把注意力放在了com.oracle.oss.mysql.mysqld.plist上,每个Mac启动中都有么,这个是如何添加的。首先查看了家里的其他苹果电脑,发现都没有这个plist文件,于是开始研究这个文件的产生原因。
12、经过Baidu怀疑这个文件应该是之前用dmg安装包安装的mysql产生的,在设置中也发现了残留信息
于是果断把自动启动去掉,重启计算机。
13、重启后,发现无论是3306还是3307端口上都没有mysql服务了,于是运行mysql.server start,这次终于看见了Starting MySQL . SUCCESS!
14、删除com.oracle.oss.mysql.mysqld.plist文件,重启电脑后,发现设置中仍然还有MySQL的控制选项。
15、MySQL dmg安装方式的卸载方法:
至此,这个问题算是完美解决了。
mysql 服务无法启动的原因有很多:可能端口被占用;可能my.cnf配置了错误的参数;也有可能没有初始数据库,还有可能是其他原因。大多数原因都可以通过先注销掉原有的服务、重新装载服务、之后再重新启动的方法解决。也可以尝试下以下方法:
1、将目录中配置文件my.default.ini改名为my.ini移至bin目录下。
2、启动命令行,将目录切换到mysql安装目录的bin目录下。
3、接下来,在命令行执行命令:mysqld --initialize --user=mysql --console
4、注意,上一个步骤会获得一个临时密码,需要记录,之后会用到。
5、接下来在控制台以命令行输入: mysqld --install,进行安装服务操作。
6、之后,在任务管理器找到“服务”,启动其中的MYSQL服务即可。
7、之后,输入命令行mysql -uroot -p,利用之前的临时密码输入即可登录数据库成功。
8、修改临时密码,设置密码:mysqladmin -u USER -p password PASSWORD,注意USER和PASSWORD为自己定义的数值。
扩展资料
数据库就相当于现实中的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。MySQL 就是一种关系型数据库。
如果服务无法启动,首先查看MySQL的服务是否存在。如果安装服务失败,则可新建项MySQL57建立项目。然后找到新建的项,检查下ImagePath的路径是否正确。如果路径不对,修改过来。重启计算机,再次启动服务,并可以成功运行MySQL服务。
参考资料:百度百科-MySQL
问题:
安装好phpstudy后,Apache可以启动,Mysql无法启动。
原因:
之前已经装过Mysql,要把系统服务里面的MySQL删除,留下MySQL服务。
解决办法:
在cmd命令行下输入:sc delete mysql即可删除mysql服务。
当我们在cmd里使用 sc delete 服务名,来删除服务的时候,报错误,SC OpenService 失败5:拒绝访问,这似乎是因为权限不够。
解决方法:
第一步、我们必须先取得管理员权限,以管理员权限运行cmd.exe。
第二步、在输入命令:sc delete 要删除的服务名
phpstudy中apache或mysql无法启动
phpstudy中apache或mysql无法启动,启动一下没了
明显端口被占用了,假如我们需要确定谁占用了我们的80端口,3306端口
对网站来说,网络apatche服务器是默认 80,数据库mysql是3306
端口占有两种解决方法:
法1:把被占用的 进程结束掉 (如果你没装iis的话,也就是 你把能关的软件都关闭 尤其迅雷什么的)
法 2:改apatche 的端口
具体如下:
----------------------------------------
法一、如何查看某个端口被谁占用,把被占用的 进程结束掉
我们在启动应用的时候经常发现我们需要使用的端口被别的程序占用,但是我们又不知道是被谁占用,这时候我们需要找出“真凶”,如何做到呢?
方法/步骤
第一步:开始----运行----cmd,或者是window+R组合键,调出命令窗口
第二步:输入命令:netstat -ano,列出所有端口的情况。在列表中我们观察被占用的端口,比如是49157,首先找到它。
(对网站来说,网络apatche服务器是默认 80,数据库mysql是3306)
第三步:查看被占用端口对应的PID,输入命令:netstat -aon|findstr "49157",回车,记下最后一位数字,即PID,这里是2720
第四步:有两种方法
1..续输入tasklist|findstr "2720",回车,查看是哪个进程或者程序占用了2720端口,结果是:svchost.exe
2..
或者是我们打开任务管理器,切换到进程选项卡,在PID一列查看2720对应的进程是谁,如果看不到PID这一列,如下图:
则我们点击[查看]---[选择列],将PID(进程标示符)前面的勾打上,点击确定。
这样我们就看到了PID这一列标识,看一下2720对应的进程是谁,如果没有,我们把下面的显示所有用户的进程前面的勾打上,就可以看到了,映像名称是svchost.exe,描述是,Windows的主进程,与上面命令查看的完全一致。
第五步:结束该进程:在任务管理器中选中该进程点击”结束进程“按钮,或者是在cmd的命令窗口中输入:taskkill /f /t /im Tencentdl.exe。
-------------------------------------------------------------------------
法二:phpstudy修改端口
phpstudy控制面板中,点击 其他选项
:将端口改为 8080
但需要注意,修改端口后,在输入网址的时候,要带着端口
如:(注意有冒号)
localhost:8080
localhost:8080/zz/index.php
一、无法访问系统资源
MySQL 不能访问启动需要的资源是造成而 MySQL 无法启动的一个常见原因,如:文件,端口等。由于 linux 中用于启动 mysqld 进程的 mysql 用户通常是不能登陆的,可以使用类似下面的命令检查文件的访问权限。
sudo -u mysql touch /var/lib/mysql/b
找出问题后,修改对应文件或目录的权限或属主后通常可以解决问题。但有时 mysql 用户有访问文件和目录的权限,但仍然会被拒绝访问,例如下面这个例子:
mysql system sudo -u mysql touch /home/mysql/data/a
mysql create table t1 (
id int primary key,n varchar(10
) data directory
ERROR 1030 (HY000): Got error 168 from storage engine
测试说明 mysql 用户有这个目录的访问权限,但创建文件还是失败,这种情况让很多人困惑,这个时候通常是 mysqld 进程的访问被 linux 的 selinux 或 apparmor 给阻止了,大家可以看到创建的表不是在 mysql 的默认目录下面,因此 selinux 或 apparmor 的 policy 里面没有包含这个目录的访问权限,此时只要对应的修改 policy 就行了,当然把 selinux 或 apparmor 停了也行。
有时虽然对系统资源有访问的权限,但系统资源已经被占用:
mysqld --no-defaults --console --user mysql
2020-11-03T03:36:07.519419Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 21171
2020-11-03T03:36:07.740347Z 1 [ERROR] [MY-012574] [InnoDB] Unable to lock ./ibdata1 error: 11
这个故障产生的原因是另外一个 mysqld 进程已经启动并占用了对应的文件。
二、参数设置错误
参数设置错误造成 MySQL 无法启动的原因也非常常见,此时先要检查 MySQL 启动时会调用的参数,下面的命令可以查询 MySQL 启动时调用参数文件的顺序:
$ mysqld --verbose --help | grep "Default options " -A 1
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
知道了 MySQL 参数文件的调用顺序,我们就可以检查对应的参数文件,找出其中的错误,如果觉得参数文件的可读性不强,可以使用下面的命令显示 mysqld 程序将要调用的参数:
$ mysqld --print-defaults
/usr/sbin/mysqld would have been started with the following arguments:
......
注意这个命令显示完参数后就退出,不会真正运行 mysqld。这个命令和 my_print_defaults mysqld 完全是等价的,只不过后者的显示方式是一行一个参数。
然后开始对可疑的参数进行调试,我个人喜欢加的参数和顺序如下:
1. 在 mysqld 后加上第一个参数 --no-defaults ,这个参数的作用是通知 mysqld 在启动的时候不要读任何参数文件;
2. 第二个参数是 --console,这个参数会把错误信息输出到屏幕上,这个参数带来的一个弊端是所有的信息都输出到屏幕上,让屏幕显得比较乱,但对于我们调试却是很方便的;
3. 第三个参数是 --log-error-verbosity=3,这个参数会显示详细的日志;
4. 然后再在后面加上有把握的参数,可以一次只加一个参数,然后启动 mysqld,采用排除法逐步找出错误的参数。
1、情况一:MySQL的错误日志文件(安装目录\MYOA\data5\机器名.err)会记录如下内容:
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Error: trying to add tablespace 460 of name '.\td_oa\flow_data_35.ibd'
InnoDB: to the tablespace memory cache, but tablespace
InnoDB: 460 of name '.\td_oa\exam_data.ibd' already exists in the tablespace
解决方法:
1)剪切出安装目录\MYOA\data5\TD_OA的flow_data_35.ibd和flow_data_35.frm两个文件;
2)启动MySQL5_OA服务,使用备份的flow_data_35.sql导入到TD_OA库中。如果提示flow_data_35表已经存在不能导入,则继续按后续步骤执行;
3)在data5下手动建立tmp目录;
4)使用MySQL管理工具或MySQL命令行程序在tmp下建立名称为flow_data_35的表(包含一个字段即可);
5)将tmp下的flow_data_35.frm和flow_data_35.ibd拷贝到安装目录\MYOA\data5\TD_OA目录下;
6)在MySQL管理工具或MySQL命令行程序中,进入TD_OA库,使用“drop table flow_data_35;”命令清除公共表空间中残留的flow_data_35表的相关信息;
7)进入tmp库,删掉flow_data_35表;
8)使用备份的flow_data_35.sql导入到TD_OA库中;
9)如果还有其他表存在该问题,可重复执行4至8步骤。
2、情况二:MySQL的错误日志文件(安装目录\MYOA\data5\机器名.err)会记录如下内容:
130409 15:54:31 [Note] Plugin 'FEDERATED' is disabled.
130409 15:54:31 InnoDB: The InnoDB memory heap is disabled
130409 15:54:31 InnoDB: Mutexes and rw_locks use Windows interlocked functions
130409 15:54:31 InnoDB: Compressed tables use zlib 1.2.3
130409 15:54:32 InnoDB: Initializing buffer pool, size = 1023.0M
InnoDB: VirtualAlloc(1086849024 bytes) failed; Windows error 8
130409 15:54:32 InnoDB: Completed initialization of buffer pool
130409 15:54:32 InnoDB: Fatal error: cannot allocate memory for the buffer pool
130409 15:54:32 [ERROR] Plugin 'InnoDB' init function returned error.
130409 15:54:32 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130409 15:54:32 [ERROR] Unknown/unsupported storage engine: Innodb
130409 15:54:32 [ERROR] Aborting
解决方法:
此情况出现的原因是myoa\mysql5\my.ini中innodb_buffer_pool_size的值太大,OA服务器操作系统不支持所致。改小后再启动mysql5_OA服务即可,一般保持和数据库大小一致。数据库大小即是myoa/data5的大小。
3、情况三:mysql服务启动不了,事件查看器中显示:The syntax '--log-slow-queries' is deprecated and will be removed in a future release. Please use '--slow-query-log'/'--slow-query-log-file' instead.
解决方法:安装目录\MYOA\data5下的ibdata1、ib_logfile0、ib_logfile1文件属性被设置为只读导致,取消只读控制,重启mysql5_OA服务即可。
4、情况四:MySQL的错误日志文件(data5\机器名.err)会记录如下内容:InnoDB: No valid checkpoint found.
解决方法:此问题找不到检查点,数据库是无效的,此种情况,只能用热备份数据恢复。
5、以上四种情况,是2013版OA系统目前比较常见的mysql服务启动不了的现象和解决办法,大家可作参考,其他情况的话,再具体分析处理。
6、分析思路总结:遇到mysql5_OA服务启动不了的情况,首先查看myoa\data5下的错误日志文件,根据日志中的具体内容进行具体分析。
7、2013版MYSQL服务启动不了(可以尝试强制启动mysql服务)方法如下:
1)打开\MYOA\mysql5\my.ini,去掉innodb_force_recovery=1前边的注释。
2)启动MySQL5_OA服务,此时MySQL处于只读状态,可以导出,不可写入。如果仍不能启动,可以尝试将innodb_force_recovery修改为2、3、4、5、6等,直到可以启动为止。
3)使用MySQL管理工具,将TD_OA等相关的数据库导出为SQL文件。
4)停止MySQL5_OA服务,删除TD_OA下的所有文件、ibdata1、ib_logfile0、ib_logfile1等文件。
5)打开\MYOA\mysql5\my.ini,在innodb_force_recovery=1前边加上#号,将该项注释掉。
6)启动MySQL5_OA服务,然后导入此前备份的SQL文件。
7)检查数据库,将无法通过该方法恢复的数据表,通过之前自动备份的SQL文件进行恢复。