Windows系统安装MySQL
在Windows中安装mysql不够幸运的话,会遇到相当多的坑,当然这也算是一种财富吧,让自己碰到问题去查找解决方案。有时候不是一时半会就可以解决的。有同学说过安装mysql安装两天还没有装上。不用担心,我安装mysql用了一天吧,下面记录下来安装过程及可能遇到的问题。
- 工欲善其事,必先利其器!我们到官网上下载所需要的版本。官网:https://dev.mysql.com/downloads/mysql/:
<MSI版本的是直接界面化下一步安装的,下面的为zip压缩包解压dos窗口安装>
- 下载完成,将文件解压到你想要安装的盘里。这里我安装到了E盘。之后以管理员身份运行DOS窗口。进入到mysql的bin文件夹下:
- 重点来了:我们需要准备的就是配置点东西
在mysql-5.7.20-winx64的文件夹下创建一个名为data的空文件夹。
创建一个my.ini的文件,放在bin目录里面。内容为:[mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=E:/mysql-5.7.12-winx64 # 设置mysql数据库的数据的存放目录 datadir=E:/mysql-5.7.12-winx64/data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB
其中basedir的路径是安装mysql的路径,datadir就是刚创建的data目录路径。(之前路径分割用的"\\",坑了好久,不知道别人怎么就可以的。还有就是my.ini文件的位置,别人放在了mysql文件夹下,坑了好久。)
- 接下来在dos窗口里面输入:mysqld --initialize-insecure (看别人用的是mysqld --initialize=insecure --user=mysql 放我机器不好使了,可能版本不同造成的吧)
- 再输入:mysqld -install (如果说已经存在,可以使用 sc delete mysql 或者 mysql -remove 将其删除)
会显示Service successfully installed.
- 最后输入:net start mysql #启动mysql服务
<当然还会有MySQL 服务无法启动的情况出现。这时查看你的my.ini文件中basedir和datadir中路径是不是上面说的那样设置的。> - 此时mysql没有密码,需要进行设置密码,输入:mysqladmin -u root password *******
这样就可以进入mysql里面了。输入:mysql -u root -p - 看一下我们mysql里初始的表有哪些,输入:show databases; #最后的分号不能少!!!
完工!!!
安装过程相当不易,不要气馁,别人不一定有你强,坚持住,多看些别人安装的过程,忽然间你的mysql就安装好了。
windows 下重置 mysql 的 root 密码
今天发现 WordPress 连接不上数据库,登录 window server 服务器查看,所有服务均运行正常。
使用 root 账号登录 mysql 数据库,结果提示密码不匹配。我突然意识到,服务器可能遭受到 SQL注入 攻击了……
至于事故发生的原因和之后所做的补救措施,以后有机会我会聊一聊的。这里我主要讲一下 mysql 用户密码的重置步骤。
重置 root 密码
在忘记 root 密码的情况下,可以进入 mysql 的安全模式,重置 root 密码。
1. 停止 MySQL 服务
打开命令提示符窗口,输入 net stop mysql 关闭 MySQL 服务。
C:\Users\Administrator>net stop mysql57 MySQL57 服务正在停止.. MySQL57 服务已成功停止。
↑ 服务名称不一定都是 mysql,比如我的就是 mysql57,57代表版本号为5.7
当然你也可以通过计算机管理面板关闭 MySQL 服务。
2. 切换到 bin 目录
在命令提示符窗口中,通过 cd 命令切换到 mysql 安装目录下的 bin 目录。
C:\Users\Administrator> cd C:\Program Files\MySQL\MySQL Server 5.7\bin C:\Program Files\MySQL\MySQL Server 5.7\bin>
↑ 默认安装目录为 C:\Program Files\MySQL\MySQL Server
3. 进入安全模式
在 bin 目录下输入 mysqld --skip-grant-tables ,跳过权限检查启动 mysql。
如果你配置了 my.ini 文件,则需要将其引入: mysqld --defaults-file="../my.ini" --skip-grant-tables
[mysqld] basedir = "C:\ProgramData\MySQL\MySQL Server 5.7" datadir = "C:\ProgramData\MySQL\MySQL Server 5.7\Data"
↑ 我在 my.ini 文件中指定了数据的存放路径,如果不引入配置文件,则会提示 No such file or directory 错误。
4. 重置账户密码
打开另一个命令提示符窗口(别关闭安全模式窗口),同样切换到 mysql \ bin 目录,输入 mysql 跳过权限验证连接数据库。
C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql Server version: 5.7.16 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
↑ 也可以指定连接参数 mysql -u <用户名> -p <密码> -h <连接地址> -P <端口号> -D <数据库>
执行 update mysql.user set authentication_string="" where user="root"; 重置 root 用户的密码(5.7 之前为 password 字段)。
mysql> update mysql.user set authentication_string="" where user="root"; Query OK, 1 row affected (0.00 sec) mysql> select user,authentication_string from mysql.user\G *************************** 1. row *************************** user: root authentication_string: *************************** 2. row *************************** user: mysql.sys authentication_string: *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE 2 rows in set (0.00 sec)
↑ root 用户的 authentication_string 字段已经被清空了
5. 刷新权限表
执行 flush privileges; 命令刷新权限表,密码已经重置完成,输入 quit 退出。
mysql> flush privileges; Query OK, 0 rows affected (0.02 sec) mysql> quit Bye
关闭所有命令提示符窗口,通过任务管理器结束 mysqld.exe 进程。重启 MySQL 服务,之后就可以直接登录 root 账号了。
修改 root 密码
出于安全考虑,root 密码不宜为空,所以需要在密码重置之后,再重新设置一个密码。
方法一:SET PASSWORD
- SET PASSWORD FOR "username"=PASSWORD("new password");
以 root 身份登录 mysql,再使用 set password 命令修改密码:
mysql> set password for root@localhost = password("pswd"); Query OK, 0 rows affected, 1 warning (0.00 sec)
方法二:mysqladmin
- mysqladmin -u "username" -p password "new password"
执行该命名之后会提示输入原密码,输入正确后即可修改。
C:\Program Files\MySQL\MySQL Server 5.7\bin> mysqladmin -u root -p password pswd Enter password: **** mysqladmin: [Warning] Using a password on the command line interface can be insecure. Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
方法三:UPDATE TABLE
- UPDATE mysql.user SET authentication_string=PASSWORD("new password") WHERE user="username";
在重置 root 密码的同时,也可以设置默认密码。不过密码不能为明文,必须使用 password() 函数加密。
mysql> update mysql.user set authentication_string=password("pswd") where user="root"; Query OK, 1 row affected, 1 warning (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)