扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在DOS下试用命令排除:①CMD②for %1 in (%WinDir%\system32\*.dll) do regsvr32.exe /s %1③for %1 in (%WinDir%\system32\*.ocx) do regsvr32.exe /s %1\x0d\x0a具体做法:开始-运行-输入cmd--回车,在命令提示符下输入下面命令:\x0d\x0afor %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回车。 \x0d\x0a完成后,再输入下面的:\x0d\x0afor %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回车。如果怕输入错误,可以复制这两条指令,然后在命令提示符后击鼠标右键,打“粘贴”,回车,耐心等待,直到屏幕滚动停止为止。
成都创新互联公司主要从事成都网站建设、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务永仁,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
题一:端口被占用:
一方案:进入命令提示符
netstat -ano|findstr 3306 查看哪个程序占用了3306端口
在任务管理器中结束该任务
问题二:“MySQL”服务已经存在:
二方案:可能是以前安装过MySQL,
1、在注册表中删除
在这里插入图片描述
2、命令 sc delete 服务名 从服务列表中删除
在这里插入图片描述
3、重启电脑再安装MySQL
文章知识点与官方知识档案匹配
MySQL入门技能树安装和登录安装
28989 人正在系统学习中
打开CSDN,阅读体验更佳
MySQL卸载后,服务仍然存在的解决方案_yijie199311的博客_mysq...
步骤一 : 删除 MySQL 隐藏文件夹 在C 盘的 ProgramData 下会有一个 MySQL 文件夹,这个文件夹要删除, * ProgramData 是一个隐藏文件夹,需要设置显示隐藏文件夹才能看到 步骤二 : 删除注册表项 (一) Windows 运行框(可通过同时按下...
[已解决] 卸载MySQL系统服务,但还是存在于服务列表里_拾年一剑的博客-C...
C:\WINDOWS\system32sc delete mysql [SC] DeleteService 成功 C:\WINDOWS\system32sc delete mysql [SC] DeleteService 失败 1072: 指定的服务已标记为删除。 解决 快捷键 Ctrl + Alt + Delete,打开系统任务管理器,查找 mysql...
最新发布 解决端口被占用问题,安装MySQL出现端口被占用
1. 快捷键 Win +R 打开命令提示符,输出命令: netstat -ano。上图可以看出 占用3306 窗口的 PID值为 13620。选中该程序,鼠标右键,点击“结束任务”
继续访问
解决mysql重装时,3306端口被占用(完整版)
解决方法: 1、打开终端,输入cmd,命令框内输入:netstat -ano 会显示如下图的内容,杀死3306对应端口的进程即可 2、杀死进程操作: taskkill /pid xxx -t -f xxx代表该端口的进程ID,也就是上图中pid一栏 例如:上面3306端口对应的是5392 命令:taskkill /pid 5392 -t -f taskkill /pid 5392 -t -f 结果就显示这样: 如果说不能杀死,可能是权限的问题,用管理员权限打开终端,再执行上述.
继续访问
安装MySQL时,输入mysqld --install后,显式该文件已存在
出现此现象的原因是因为在之前已经安装过mysql并且在卸载时没有删除干净。处理方法:1、以管理员身份运行,输入sc query mysql命令,查看名为mysql的服务2、输入命令:sc delete mysql,删除该mysql 3、再次执行命令:mysqld --install即可...
MySQL卸载后服务依旧存在_daixiangcn的博客_mysql卸载后...
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL 解决方案 以管理员身份进入cmd,输入如下命令,删除mysql scdeletemysql 1 运行结果: 图1.cmd窗口 可能出现的问题: ...
MySQL 3306端口被占用
开始-运行-cmd, 输入 netstat -ano, 看第一列,后面的就是端口,找到3306 ,记住对应的PID然后打开任务管理器查看 - 选择列 - 勾上 PID(进程标识符) - 确定 在任务管理器找到刚才的PID的进程,查看是什么程序占用了端口,把它关闭在重新启动mysql就不会包端口被占用的错误了...
继续访问
win10 mysql 卸载不干净,安装提示,已经存在
1.Zip解压后管理员身份运行cmd(系统win10) 2.输入命令cd /d F:\mysql-5.7.19-win32\bin(此为解压目录) 3.输入安装命令mysqld --install 出现问题The service already exists 这是由于之前已经安装过mysql并且没有删除干净 4.重新以管理员身份运行,输入sc query mysql,查...
继续访问
MySql8安装错误信息:The service already exists!
一、错误信息 The service already exists! The current server installed: E:\MySql_8_Package\mysql-8.0.15-winx64\bin\mysqld MySQL 错误分析:我在进行mysqld --install命令的时候出现以上错误信息,该错误提示表示(服务已经存在!)。说明之前已经安装或存在过服务。 继而观察,提示下面的路径是我之前安装的路径。并不是当前安装的路径,最终得知我之前的卸载mysql的时候并没有卸载干净以至有所
继续访问
安装mysql遇到服务已经存在的错误
前言 mysql是一个小巧,方便,快捷的数据库软件,虽然5.7版本已经很大,主要是扩展了多别的功能,但是5.5版本还是很小的,只有55mb,学习使用很方便, 但是mysql经常因为卸载不干净,会导致无法重新安装数据库,所以下面介绍一种处理方式
继续访问
删除计算机中的某项服务(解决重装MySQL等软件时服务名已存在的问题)
昨天给电脑重装MySQL进行到配置服务时,如下所示,显示服务名MySQL57已被占用 怎么解决这种情况呢 第一种就是将电脑中名字为MySQL57的这个服务删去 第二种是配置MySQL服务时命名一个新的服务名 第二种很简单,我可以将重装的MySQL服务命名为MySQL58或者MySQL59,反正只要不是电脑中已存在的MySQL57就可以了 第一种就相对有点麻烦,具体步骤如下: 1.打开任务管理器,找到“服务”菜单下的MySQL57这个服务进程,右键选择“打开服务” 2.将该服务的服务名复制后点击“取消
继续访问
Windows 安装MySQL时出现(The service already exists)
以管理员的身份运行cmd,然后再进入MySQL的安装目录,下面是我的安装路径。出现 The service already exists!这是由于之前已经安装过MySQL并且没有删除干净。后面的操作,您自己来吧,或者看我的另一个。
继续访问
MySQL卸载后,服务仍然存在的解决方案
步骤一 : 删除 MySQL 隐藏文件夹 在 C 盘的 ProgramData 下会有一个 MySQL 文件夹,这个文件夹要删除, * ProgramData 是一个隐藏文件夹,需要设置显示隐藏文件夹才能看到! 步骤二 : 删除注册表项 (一) Windows 运行框(可通过同时按下 Windows徽标键 + R键来调出这个运行框)中输入 regedit , 打开注册表编辑窗口,逐级打开找到如下项 : HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Servic
继续访问
安装宝塔面板时,一直出现已检测到mysql
解决方法:一定是mysql没有完全卸载。卸载方法:1.程序删除2.文件删除:C盘的Program File,Program File(x86),ProgramData文件夹下的mysql文件(需要显示隐藏的文件)3.注册表删除win+r输入regedit删除:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL文件夹。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Ser
继续访问
安装MySQL---已删除服务,却显示服务已存在
安装MySQL过程及问题记录 安装MySQL 安装MySQL zip全过程 安装过程中服务未成功启动 重新安装(命令:mysql --version),报: 于是删除指定服务(命令sc delete MySQL),重新安装(命令:mysql --version),出现同样问题,再次删除显示如下: 解决办法 打开服务管理窗口(计算机–右键–管理),找到服务–MySQL–右键–重新启动(刷新),再...
继续访问
卸载mysql之后,mysql服务仍在,显示读取描述失败,错误代码2
卸载mysql之后,mysql服务仍在,显示读取描述失败,错误代码2 1.删除C盘下的隐藏文件夹ProgramData里面的MySql文件夹。 2.cmd - regedit 回车,进注册表里面,删除了里面的HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Control/MySQL, HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Control/MySQL, HKEY_LOCAL_MACHINE/SYSTEM/CurrentCont
继续访问
解决 卸载Mysql后,服务还在的问题
早就听说要是之前装的mysql没卸载干净再次安装会出问题。所以按照网上完全卸载的教程老老实实地卸载掉之前的版本。可再次安装后还是出了个小问题,在命令行net start mysql启动服务的时候还是显示服务已经存在,真是让我有点摸不着头脑了。文件、注册表是已经卸载完全了,现在报的这个问题是服务仍然存在,经过搜寻发现问题在于服务没有移除掉,这时候只需以管理员的身份打开命令行,敲入sc del...
继续访问
重装mysql时3306端口被占用解决方法
如果在安装mysql中出现3306端口不能使用,已经被占用的过程 则需要将该端口号的进程释放即可 根据该思路我们只需要找到该3306的进程号并且消灭进程即可 根据解决思路 方法前言 运行cmd命令消灭进程需要在管理员方式下运行 否则会出现不给消灭不给权限的问题 类似这种不可访问不给权限的设置 为了解决这种设置 正确思路: 在window中搜索命令提示符文,并且以管理员身份运行即可 1.查找进程号 可以使用一条命令netstat -aon|findstr "3306" 2.找到该进程号后消灭其进程号即可
继续访问
热门推荐 cmd启动MySQL服务显示服务名无效,MySQL服务无法启动
问题描述: 使用cmd启动mysql服务时,显示服务名无效。 原因分析: 1、MySQL服务端口被占用。 2、系统中没有注册MySQL到服务中,即当前路径下没有mysql服务。 解决方案: 1.解决服务名无效 (1)在cmd中切换目录到MySQL安装路径下的bin文件中。 如:E:\phpstudy_pro\Extensions\MySQL5.7.26\bin (2)移除MySQL(出现Service successfully install表示操作成功。) m
继续访问
安装MySQL时,输入mysqld --install后,显式该文件已存在
出现此现象的原因是因为在之前已经安装过mysql并且在卸载时没有删除干净。 处理方法:1、以管理员身份运行,输入sc query mysql命令,查看名为mysql的服务 2、输入命令:sc delete mysql,删除该mysql 3、再次执行命令:mysqld --install即可成功 ...
继续访问
mysql 服务已经存在_windows下mysql主从同步时从服务器出现表已经存在解决办法
问题如下:mysqlshowslavestatus\G***************************1.row***************************Slave_IO_State:Master_Host:172.168.3.190Master_User:slaveMaster_Port:12148Connect_Retry:60Master_Lo...
继续访问
MySQL安装时输入命令mysqld --initialize --console显示the service is already installed
卸载guomysql后再次安装时,输入命令mysqld --initialize --console显示the service is already installed。1、以管理员身份运行cmd,输入命令查看名为mysql的服务。出现这种问题说明卸载之前的MySQL是并没有卸载干净。3、删除完成后,再次输入安装命令进行安装。2、输入命令删除该mysql服务。
继续访问
mysql端口被占用了如何解决_如何解决Win10安装MYSQL端口被占用?
Windows10系统安装MYSQL端口被占用怎么办?现在越来越多的人从Windows7系统升级到了Windows10系统,相信很多朋友在使用Windows10系统的时候都遇到了端口被占用的情况,MYSQL的端口号默认是3306,最近就有朋友遇到了MYSQL端口被占用的情况,该如何解决?下面小编就为大家介绍一下Win10系统安装MYSQL被占用的解决方法,希望大家会喜欢。Win10系统安装MYSQ...
继续访问
mysql服务已存在
您好,很高兴为您解答。
一、mysql服务
我的电脑——(右键)管理——服务与应用程序——服务——MYSQL——开启(停止、重启动)
二、命令行方式
Windows
1.点击“开始”-“运行”(快捷键Win+R)。
2.启动:输入 net stop mysql
3.停止:输入 net start mysql
提示* Redhat Linux 也支持service command,启动:# service mysqld start 停止:# service mysqld stop 重启:# service mysqld restart
* Windows下不能直接重启(restart),只能先停止,再启动。
可以通过批处理完成,保存为:mysqlreset.bat
net stop mysql
net start mysql
三、Too many connections
2008-04-30┆379,578 Views┆56,071
错误编号:1040
问题分析:
连接数超过了 MySQL 设置的值,与 max_connections 和 wait_timeout 都有关系。
wait_timeout 的值越大,连接的空闲等待就越长,这样就会造成当前连接数越大。
解决方法:
1、虚拟主机用户请联系空间商优化 MySQL 服务器的配置;
2、独立主机用户请联系服务器管理员优化 MySQL 服务器的配置,可参考:
修改 MySQL 配置文件(Windows下为 my.ini, Linux下为 my.cnf )中的参数:
max_connections= 1000
wait_timeout = 5
如果没有可以自行添加,修改后重启 MySQL ,如果经常性的报此错误,请按照服务器环境搭建教程检查服务器。
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
错误代码 1045
Access denied for user 'root'@'localhost' (using password:YES)
解决办法是重新设置root用户密码,在Windows平台下操作步骤如下:
1、以系统管理员身份登录到系统;
2、如果MySQL服务器正在运行,停止它。
如果是作为Windows服务运行的服务器,进入服务管理器:开始菜单-控制面板-管理工具-服务
如果服务器不是作为服务而运行的,可能需要使用任务管理器来强制停止它。
3、创建1个文本文件,并将下述命令置于单一行中:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
用任意名称保存该文件。在本例中,该文件为C:\mysql-init.txt。
4、进入DOS命令提示:开始菜单-运行- cmd
假定你已将MySQL安装到C:\mysql。如果你将MySQL安装到了另一位置,请对下述命令进行相应的调整。
在DOS命令提示符下,执行命令:
C:\ C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt
在服务器启动时,执行由“--init-file”选项(作用:在启动时从指定的文件中读取SQL命令)命名的文件的内容,更改根用户密码。当服务器成功启动后,应删除C:\mysql-init.txt。
5、停止MySQL服务器,然后在正常模式下重启它。如果以服务方式运行服务器,应从Windows服务窗口启动它。如果以手动方式启动了服务器,能够像正常情形下一样使用命令。
应能使用新密码进行连接
起因:发现 MySQL Slave 数据库 各项状态正常即SQL 线程 IO线程正常,但就是数据不更新,解决办法每次重启服务 恢复正常。 1.首先要确定主服务器与从服务器的数据库是否一样,比如主数据库有,demo,test,lomo,manage。从数据库也必须有这些数据库。如果主从服务器数据库一致则忽律此步。 2. Slave数据库my.cnf 配置文件添加如下配置 slave_net_timeout=30 配置好之后将从服务器的数据重新从主服务器拉取一下。保持数据跟主服务器一致 重启MySQL服务:service mysqld restart
一、背景
近期,公司RDS云产品的MySQL Server版本进行升级,由目前使用的5.7.26版本升级到最新版本5.7.31;升级后测试同学发现:在MySQL创建用户后,5.7.31版本重新启动集群会出现启动失败的现象;而5.7.26版本在相同测试场景下是正常启动的。这到底是为什么呢?
二、问题复现
2.1 实验环境
2.2 操作步骤
按照测试同学的测试步骤,首先创建一个用户:
然后关闭mysqld;这里需要介绍一下,我们集群的关闭方式是如下方式:
这种方式的内部实现类似于kill -9模式。所以我在线下环境使用kill -9的方式来复现,操作如下:
然后重启mysqld,操作如下:
此时问题复现了,mysqld启动失败,我们查看了下error日志,信息如下:
根据报错信息可以看出:MySQL的权限系统表发生了损坏,导致了mysqld启动失败;由于在MySQL 5.7及其之前版本该表是MyISAM引擎,且该引擎不支持事务,所以在mysqld异常崩溃会导致该类型引擎表的损坏;但在mysqld启动时是有参数控制MyISAM引擎的恢复模式,且该参数在我们产品中也配置到了my.cnf中,如下所示:
2.3 参数解析
对于该参数的官方文档的解释如下:
设置MyISAM存储引擎恢复模式。选项值是OFF、DEFAULT、BACKUP、FORCE或QUICK的值的任意组合。如果指定多个值,请用逗号分隔。指定不带参数的选项与指定DEFAULT相同,指定显式值" "将禁用恢复(与OFF值相同)。如果启用了恢复,则mysqld每次打开MyISAM表时,都会检查该表是否标记为已崩溃或未正确关闭。(只有在禁用外部锁定的情况下运行,最后一个选项才起作用。)在这种情况下,mysqld在表上运行检查。如果表已损坏,mysqld将尝试对其进行修复。
服务器自动修复表之前,它将有关修复的注释写到错误日志中。如果您希望能够在无需用户干预的情况下从大多数问题中恢复,则应使用选项BACKUP,FORCE。即使某些行将被删除,这也会强制修复表,但是它将旧的数据文件保留为备份,以便您以后可以检查发生了什么。
全局变量,只读变量,默认为OFF。
三、问题修复
这类MySQL用户表损耗的问题解决方式也是有多种,我这里列举其中一种:
(1)my.cnf中的[mysqld]标签下添加skip_grant_tables,启动时跳过加载系统字典。
(2)重启mysqld,然后修复mysql schema下的所有表。
(3)在[mysqld]标签下注释或删除掉skip_grant_tables,然后重启mysqld。
此时mysqld是可以正常启动的,无异常。
四、深入排查
在产品化中,以上修复方式很不优雅,只是作为临时的解决方案;并且也存在一些令人疑惑的点:
带着这些疑问,我们继续排查出现该现象的原因;此时Google也没有找到一些有效的信息,那么只能通过MySQL源代码来寻找一些答案。
首先需要下载mysql 5.7.31版本的源代码,并搭建mysql debug环境;具体步骤可以自动Google搜索一下,本文就不再赘述了。
在源代码中搜索一下关键词,用于打断点的位置,然后进行调试:
定位到相关代码,大概是sql/mysqld.cc的4958行,且存在if条件判断,此时我们开始调试:
通过以上调试信息,可以判断出acl_init函数返回的值为真;此时我们查看该函数的代码 (sql/auth/sql_auth_cache.cc:1365):
根据该函数的注释发现:该函数是初始化负责用户/数据库级特权检查的结构,并从mysql schema中的表中为其加载特权信息;且return值为1代表的是初始化权限失败。
此后开始逐步调试,观察return相关信息,当调试到lock_table_names函数时,我们发现在Phase 3时return值为true,且根据代码注释发现true代表是Failure;具体代码如下(sql/sql_base.cc:5549):
调试信息如下:
可以看到flags的值为0,而MYSQL_OPEN_SKIP_SCOPED_MDL_LOCK为宏定义值0x1000,与flags的值 做按位与操作,结果自然也是0,当然MYSQL_LOCK_IGNORE_GLOBAL_READ_ONLY也是如此;need_global_read_lock_protection是bool类型值,代表是否需要全局读锁的保护,这个值是在table- mdl_request.type不为MDL_SHARED_READ_ONLY发生改变;check_readonly函数相关信息 下面概述。
此时也查看了下MySQL 5.7.26版本代码作为对比,发现lock_table_names函数下的Phase 3后的部分代 码是在5.7.29版本后新增的。如果是git clone的MySQL代码可以用git blame命令查询文件变化的信息:
上述展示的信息中,最左侧的列值为commit id为05824063和0405ebee,有兴趣的同学可以详细看下。
此功能解决的问题是 BUG#28438114: SET READ_ONLY=1 SOMETIMES DOESN'T BLOCK CONCURRENT DDL.;当然这个代码的变更功能也在5.7 Release Notes中有所体现,如下所示( m/doc/relnotes/mysql/5.7/en/news-5-7-29.html ):
最后我们再查看下check_readonly函数,该函数是基于read_only和super_read_only状态执行标准化检查,是禁止(TRUE)还是允许(FALSE)操作。代码如下(sql/auth/sql_authorization.cc:489):
此时第一反应就是去检查my.cnf中是否包含read_only相关参数,检查之后发现确实是使用了该参数, 如下:
此时注释掉该参数,然后再次启动mysqld,发现MyISAM表可以自动修复,且正常启动;error log信息如下:
由于docker一些限制,我们在mysqld启动会涉及两次;所以解决该问题的方式为:第一次mysqld的启动时先关闭read_only参数,第二次启动时开启read_only参数。之所以选择默认开启read_only参数, 是为了避免在mysqld启动后,选主逻辑未完成时的保护措施;当然选主完成后,会自动对master执行 set global read_only=0 操作。
五、总结
六、附录
调试的栈帧信息如下,有兴趣的小伙伴可以研究下:
熟悉MySQL体系结构和innodb存储引擎工作原理;以及MySQL备份恢复、复制、数据迁移等技术;专注于MySQL、MariaDB开源数据库,喜好开源技术。
原文链接:
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流