1. 下载
https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.20-winx64.zip
2. 解压到特定目录
本例中解压到C:\UserDefined\mysql-5.7.20-winx64
3. 准备my.ini
创建目录C:\UserDefined\mysql-5.7.20-winx64\conf,并在该目录下创建文件my.ini:
[mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 #[client] ## 设置mysql客户端连接服务端时默认使用的端口 #port=3306 #default-character-set=utf8 [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=C:\\UserDefined\\mysql-5.7.20-winx64 # 设置mysql数据库的数据的存放目录 datadir=C:\\UserDefined\\mysql-5.7.20-winx64\\data # 允许最大连接数 max_connections=200 # 允许连接失败的次数。 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 #mysql_native_password default_authentication_plugin=mysql_native_password ##以下设置开启可以无密码登录mysql,通常用于密码设置及权限管理 #skip-grant-tables
4. 初始化并安装系统服务
4.1 初始化
C:\UserDefined\mysql-5.7.20-winx64\bin\mysqld.exe --initialize --defaults-file=C:\UserDefined\mysql-5.7.20-winx64\conf\my.ini
注意:
1. 使用 --initialize 是会随机生成一个mysql root账户的密码,在启动后,需要使用无密码模式进去,设置root密码,才可以使用;如果想查看随机生成的密码,可以在data目录下,用文本编辑软件(如记事本)打开*.err文件,即可看到随机生成的root密码
2. 如果想生成空的root密码,可以使用模式 --initialize-insecure,此时会生成一个空的root密码,即无密码模式登录,客户端可以使用mysql -h 127.0.0.1 -uroot登录
C:\UserDefined\mysql-5.7.20-winx64\bin\mysqld.exe --initialize-insecure --defaults-file=C:\UserDefined\mysql-5.7.20-winx64\conf\my.ini
4.2 安装系统服务
C:\UserDefined\mysql-5.7.20-winx64\bin\mysqld.exe install MYSQL5720 --defaults-file=C:\UserDefined\mysql-5.7.20-winx64\conf\my.ini
其中注册的windows服务名称为MYSQL5720
执行完成后,显示Service successfully installed. 则代表已经安装完成
此时,打开windows服务列表,应该可以看到注册的windows服务
如果想删除windows服务,可以用管理员身份打开cmd,并执行下面命令进行删除
sc delete MYSQL5720
如果想启动mysql windows服务,可以在命令行键入
rem 启动mysql windows服务 net start MYSQL5720 rem 停止mysql windows服务 net stop MYSQL5720 rem 删除mysql windows服务 sc delete MYSQL5720
5. 客户端登陆mysql
5.1. 无密码模式登录
如果使用的是--initialize 模式初始化的mysql,忘记了root的密码,此时需要用无密码模式登录mysql,并修改设置root的密码,方法为。
5.1.1 修改my.ini
在my.ini文件[mysqld]下面添加skip-grant-tables,然后重启mysqld windows服务
5.1.2 mysql客户端登陆
mysql -h 127.0.0.1 -uroot
5.1.3 修改root密码
ALTER USER 'root'@'localhost'IDENTIFIED BY 'root'; ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
如果出现下面错误:
mysql> ALTER USER 'root'@'localhost'IDENTIFIED BY 'root'; ERROR 1290 (HY000): Unknown error 1290
这是因为mysql正在MySQL正使用%s选项运行,因此不能执行该语句,要先执行
flush privileges;
注:
也可使用下面方法来设置root用户的密码
use mysql; update mysql.user set authtntication_string=password('root') where user='root'; flush privileges;
5.1.4 重置my.ini并重启mysql windows 服务
修改my.ini,把skip-grant-tables注释掉,并重启mysql服务
5.2 通过mysql客户端使用mysql服务
在5.1 步骤做好之后,即可用过mysql客户端正常使用mysql服务了!!如果在5.1中是通过
use mysql; update mysql.user set authtntication_string=password('root') where user='root'; flush privileges;
方式来设置root用户密码的,在客户端执行命令时都可能会遇到错误
ERROR 1820 (HY000): Unknown error 1820
该错误的含义是:ERROR 1820 (HY000): You must SET PASSWORD before executing this statement,即要先修改密码后才能正常使用数据库,此时修改一下root用户的密码即可,可通过下面sql中任意一条执行即可
SET PASSWORD = PASSWORD('root'); --ALTER USER 'root'@'localhost'IDENTIFIED BY 'root'; ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; flush privileges;
补充:
mysql什么时候需要flush privileges?
flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。