MySQL无法启动 服务没有报告任何错误
my.ini配置文件内容
[client]
port=3306
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir= D:\Program Files\MySQL\mysql-5.7.20-winx64 # 配置成自己的路径
datadir= D:\Program Files\MySQL\mysql-5.7.20-winx64\data #配置成自己的路径
pecharacter-set-server=utf8
default-storage-engine=innodb
max_connections=512
innodb_flush_log_at_trx_commit=0
innodb_log_file_size = 1G
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 50
innodb_lock_wait_timeout = 120
explicit_defaults_for_timestamp=true
sync_binlog=1000
innodb_log_buffer_size=16M
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_purge_threads = 8
innodb_page_cleaners = 8
innodb_open_files = 65535
innodb_buffer_pool_size=8G
innodb_buffer_pool_instances=1
innodb_file_per_table=1
innodb_file_io_threads=4
2018年04月04日 10:52:13 DeBugggggggggg 阅读数:2077
解决windows的mysql无法启动 服务没有报告任何错误的经验。
相信很多人都遇到过安装Mysql的时候出现各种各样的问题,今天小编就教大家解决window下mysql服务没有报告任何错误的情况下无法启动 的问题。本文所用的mysql版本是5.7以上版本,解决方法:
工具
-
window
-
mysql5.7
方法/步骤
-
注意点1:你在看网上的教程配置完my.ini(自己的mysql配置文件)后不能自己创建一个data文件夹。
-
好多人,包括楼主也是,配置完datadir属性后觉得这个存储数据的文件夹路径没有呀,自己动手建一个呗。错就错在这里,不能动手建,你自己动手建的data文件夹里怎么可能有mysql启动所需要的表结构配置文件呢?
-
问题2:在使用net start msql的时候提示“服务报告没有任何错误”。
安装完mysql服务后迫不及待的开启mysql服务,在mysql5.7以上版本中默认没有一个data目录,即没有初始化服务。需要先初始化mysql才可以启动服务,否则会报 “服务没有报告任何错误”,启动失败呗。
正确的步骤是:先在mysql的bin目录下执行mysqld --initialize-insecure (不设置root密码,建议使用)命令,第一次执行这个命令会等待的时间稍微长了一些,并且控制台没有任何返回结果。可以看到mysql的根目录下会多出一个data文件夹,里面一堆文件。
-
问题3:没有先执行mysqld --initialize-insecure (不设置root密码,建议使用),而是先执行net start mysql了,启动失败,mysql会自动创建一个data文件夹,并在里面初始化一些文件,在再次执行mysqld - initialize的时候并没有把data文件夹删除。错误信息如下图:
-
此时的解决方案是:删除data文件夹,然后执行mysqld - initializemysqld --initialize-insecure (不设置root密码,建议使用),再启动mysql。
-
问题4:mysql安装完了,可高兴的输入“mysql或者mysql -hlocalhost -uroot -p”一回车,居然没有进去,出了个“ERROR 1045 Access denied for user 'xxx' NO”
-
原因是新版的mysql为了安全性,默认是有密码的。
-
解决方法:
mysql默认安装会有密码生成,密码文件直接写在 log-error 日志文件中(在5.6版本中是放在 root/.mysql_secret 文件里,更加隐蔽,不熟悉的话可能会无所适从),MySQL5.7在安装完后,第一次启动时,会在root目录下生产一个随机的密码,文件名为.mysql_secret
登录时需要用随机密码登录,然后通过以下命令修改密码
SET PASSWORD = PASSWORD('new password');