mysql 5.7~8.+ 手动安装
再安装mysql5.7 或以上的版本出现了一些问题,现在总结下,希望能给初入学习mysql的人一下帮助
下载mysql 5.7/8.+ 社区版(免费),下载地址:https://dev.mysql.com/downloads/mysql/ 当然,你下载安装版的安装就简单了,这个教程主要是需要手动配置的mysql,也就是下载下来不是msi或者exe的一键式安装,而是需要自己配置安装的
更多详细信息请查看:
官方安装文档手册:https://dev.mysql.com/doc/refman/8.0/en/windows-create-option-file.html
第一步:设置mysql的安装路径
解压下载好的 mysql-8.0.28-winx64.zip
在里面找到my-default.ini 文件复制一份修改为my.ini
注意:mysql8.+版本已经没有my.ini文件,需要手动添加;
使用记事本打开my.ini ,找到basedir 和datadir 把前面的#删除
basedir修改为当前mysql的目录
datadir修改为当前目录下的data目录
比如我的mysql路径为: D:\\Development\\mysql
注意:内容里面的斜杠必须是:\\ 或 /
那么我的设置是
mysql8.0的my.ini可参考下面:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=C:\0\mysql8
# 设置mysql数据库的数据的存放目录
datadir=C:\0\mysql8\\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证,注意:从mysql8开始已改为:caching_sha2_password;;--- 废弃⚠️
# 从 mysql8.4.3开始,default_authentication_plugin作废,需要加上 mysql_native_password=ON
mysql_native_password=ON
;default_authentication_plugin=caching_sha2_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
第二步,修改系统环境变量
右键桌面的计算机-属性-高级系统设置-环境变量-在系统变量栏下找到path
找到path编辑里的变量值,注意不要删除里面原来存在的值,只需再最后加上你的mysql路径就行了,注意前面的分好,我的输入是:
;D:\Development\mysql\bin
然后一直确定保存就行了
第三部,安装并启动mysql
使用管理员的身份运行cmd
使用命令进入到mysql的目录下的bin文件夹(不论配没配置环境变量,都需要进入bin目录)
进入bin目录后,首先安装(手动注册)mysql服务
mysqld --install
提醒:此处是使用bin目录下的mysqld.exe 所以此操作需要进入bin目录下,否者出错
如果此处直接启动mysql服务的话
mysql 服务无法启动。
服务没有报告任何错误
既然是启动服务出错了,那么我们就可以查看系统的错误日志了,打开计算机管理-系统工具-事件查看器-windows日志-应用程序
我们发现发现爆出了两个错误信息
第一个是操作中断信息
看第二个
恩,错误很明显,大致意思是没有在datadir(第一步设置的data目录的一个值)目录里面设置的更多信息,查了下,data目录主要是保存和生成一些用户配置的数据,如登陆用户信息,日志,数据库文件等等,而在mysql5.7版本里面与mysql5.6版本里是有些不一样的,mysql5.6版本里已经默认有了data目录,而5.7是没有的,那么我们怎么办?
查了下资料,大部分都说把mysql5.6的data复制一份给5.7里,额。。。感觉有点不靠谱啊,继续找,终于发现了在mysql5.7里提供了一个命令来一件生成data这个目录
mysqld --initialize --console
或:mysqld --initialize-insecure --console
那么好,我们就是用这个命令看下
-------------------
好了,到了这步后来启动mysql服务
net start mysql
恩,启动成功了... 执行完上面命令后,MySQL会自动新建一个data文件夹,并且新建好默认数据库,登录的用户名为root,密码为空
至此,mysql服务已经启动成功了
卸载mysql,可跳过
1.停止mysql服务
net stop mysql
(强制停止mysql服务 taskkill /f /im mysqld.exe )
2.卸载服务
mysqld --remove
3.彻底删除服务
sc delete mysql.exe
mysql5.7 登陆修改root密码
新安装的mysql是没有密码的,而忘记密码可以使用命令来跳过密码检测
1.新安装的mysql无密码登陆和修改:
进入mysql的bin目录
mysql -u root -p
在输入密码行处直接回车就登陆mysql了
查看数据库
show databases;
选择需要操作的数据库
use mysql;
然后我们直接设置mysql的密码
set password = password('123456');
更新完后刷新权限表,使密码生效
flush privileges;
密码已更新,退出当前,重新使用密码登陆
quit;
mysql8.+ 登陆修改root密码
alter user user() identified by "123456";
或
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
忘记密码的情况找回密码
极端的方法是删除data目录重新生成,这种方式不推荐,因为这种方式也能删除数据库或其他重要数据
我们需要优雅的修改mysql的密码,那么我们需要:
暂停mysql服务
net stop MySQL
跳过密码检测:
mysqld --skip-grant-tables
然后此cmd窗口不动,以管理员身份重新打开另一个cmd,转到mysql下的bin目录下
输入:mysql -u root
直接进入到mysql了
然后直接修改密码(注意,mysql5.7的密码字段是authentication_stirng ,而5.6版本是password)
5.7: update mysql.user set authentication_string=password('12567') where user ='root' and host ='localhost';
5.6(未测试):update mysql.user set password = password('12567') where user = 'root';
更新完后刷新权限表,使密码生效
flush privileges;
密码已更新,退出当前mysql和关闭另一个cmd,重新使用修改过的密码登陆
quit;
PS:修改密码不一定只有这种,还有其他方式,这里就多做解释了。
注:如果写得有问题,可以反馈哈,大部分资料都是从网上整理出来的