安装教程
- 去官网下载压缩包版的mysql,不是dba直接下载不带调试和分析工具的版本即可,这里我选择:mysql-5.7.44-winx64.zip
版本。 - 解压这个压缩包文件,放置到一个你喜欢本地路径(最好不要包括中文路径),先记下这个完整路径,稍后配置时需要用到。(我本机为:E:\Mysql-5.7.44)
- 打开系统环境变量设置界面,一般自己研究的话建议配置当前登录用户即可。首先新建一个变量名:%MYSQL_HEME%,值要指向你刚才记录的完整路径,记得在最后面加 ; 号。
- 继续新增一个变量,叫 %MYSQL_HEME%/bin;
- 在正式配置前,假若你之前曾经安装过msyql,可以先删除原有的msyql服务项,步骤如下:
#我之前安装过GUI的版本,旧服务名为mysql
mysqld --remove mysql
- 进入mysql根目录,新建一个名为my.ini的配置文件,写上下面这堆这玩意:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录 ----------是你的文件路径-------------
basedir=E:\Mysql-5.7.44
# 设置mysql数据库的数据的存放目录 ---------是你的文件路径data文件夹自行创建
datadir=E:\Mysql-5.7.44\data
# 允许最大连接数
max_connections=100
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
innodb_flush_method=normal ---------这行的作用在后面脱坑过程有详细解释,现在先照写就完了。
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
- 使用系统管理员权限打开cmd,cd命令进入mysql根路径,其实无所谓,因为前面已做了用户变量。在任务地方输入的命令,都可以自动定位到mysql根目录和其下的bin子目录了。
- 让mysql根据刚才配置的my.ini,初始化数据。
mysqld --initialize-insecure --user=mysql
注意:在这一步中执行过程中和完成后,强烈建议你先进入mysql的data子目录(你配置的数据库数据的存放目录)里面,查看确认日志文件,文件名以【计算机名+.err扩展名】命名,打开记事本把文件拖进去就可以查看。仔细观察每一行日志中是否包含error标注的行,如有则需先处理解决掉这些错误,否则会影响稍后的数据库服务启动。若没有,那么恭喜你可以继续下一步了!
- 创建mysql服务
# 在系统中创建一个mysql数据库服务,服务名为:mysql,配置文件使用:E:\Mysql-5.7.44\my.ini
mysqld --install "mysql" --defaults-file="E:\Mysql-5.7.44\my.ini"
- 启动服务
#启动服务,成功启动后将以系统后台服务形式运行。
net start mysql ----若启动服务服务报错(我就踩坑了),请看参考脱坑过程或其他大神手札指引。
#停止服务 ----以后维护时才用得上
net stop mysql
- 登录数据库
mysql -u root -p
#新配置时root密码为空,可以直接回车
- 修改root密码为123456,这里仅仅只是演示,开发测试可以这么干,在生产环境这么搞你准备好收拾包袱跑路吧。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
- 由于root账号默认只允许本机登录,不允许远程访问。当你在查询器使用该账户登录mysql时会提示访问受限,一般情况下也不建议直接使用root来远程访问,而会创建新账户、分配可控的权限来使用。但有时开发为了本机调试方便,可以这样做:
#假设现已在服务器上通过cmd成功登录了root用户,可以执行如下sql命令解除root账号的访问范围限制:
update user set host = '%' where user = 'root'; ---允许任意ip远程使用root远程访问
---你也可以根据ip地址限制,我当前的ip为192.168.3.1,若希望只允许本网段的ip使用root远程访问,可这样写:
update user set host = '192.168.3.%' where user = 'root';
---未修改前的系统默认限制等价于:
update user set host = 'localhost' where user = 'root';
#记得刷新权限
flush privileges; 如果不刷新,只能在重启数据库服务后才能生效
脱坑过程
我在尝试启动数据库服务后,提示错误:Mysql数据库启动失败,错误码:1067。错误码其实描述得比较笼统,真正的错误详情其实在日志文件中记录着。查看带error行的日志,其中有一行是这样的:
InnoDB: File .\ib_logfile0: 'aio read' returned OS error 187. Cannot continue operation For more information, see Help and Support Center at http://www.mysql.com.
这个错误跟磁盘有关,解决其实很简单,就是为上面my.ini配置文件添加一行:
innodb_flush_method=normal
这是你再重新执行第7部的初始化动作即可!由于之前执行过初始化,系统会初始化失败(因为data目录已存在),先删除整个data目录后再初始化就可以了!