下载 MySQL
网址:MySQL – Download MySQL Shell 下载:Windows (x86, 64-bit), ZIP Archive (mysql-shell-8.0.17-windows-x86-64bit.zip)
下载后,将 zip 包解压到相应的目录,这里将解压后的文件夹放在 F:\web\mysql-8.0.17-winx64 下。
配置 MySQL 的配置文件
在 F:\web\mysql-8.0.17-winx64 文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息:
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=F:\\web\\mysql-8.0.17-winx64
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# datadir=C:\\web\\sqldata
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
启动 MySQL 数据库
以管理员身份打开 cmd 命令行工具,切换目录:
cd F:\web\mysql-8.0.17-winx64\bin
初始化数据库:mysqld --initialize --console
执行完成后,会输出 root 用户的初始默认密码,如:
F:\web\mysql-8.0.17-winx64\bin>mysqld --initialize --console
2020-05-06T01:20:42.052390Z 0 [System] [MY-013169] [Server] F:\web\mysql-8.0.17-winx64\bin\mysqld.exe (mysqld 8.0.17) initializing of server in progress as process 11076
2020-05-06T01:20:42.053369Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
2020-05-06T01:21:09.680922Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: llhRePXC4x/4
2020-05-08T01:21:21.098769Z 0 [System] [MY-013170] [Server] F:\web\mysql-8.0.17-winx64\bin\mysqld.exe (mysqld 8.0.17) initializing of server has completed
第4行中的 llhRePXC4x/4 就是初始密码,后续登录需要用到,也可以在登陆后修改密码。
启动及关闭 MySQL 服务器:打开命令窗口(cmd),进入 MySQL 安装目录的 bin 目录。
启动:mysqld --console
关闭:mysqladmin -uroot shutdown
安装命令:
F:\web\mysql-8.0.17-winx64\bin>mysqld install
Service successfully installed.
启动 mysql 服务:net start mysql
关闭 mysql 服务:net stop mysql
注意:在 5.7 需要初始化 data 目录
cd F:\web\mysql-8.0.17-winx64\bin
mysqld --initialize-insecure
登录 MySQL
mysql -h 主机名 -u 用户名 -p
参数说明:-h
指定客户端所要登录的 MySQL 主机名,登录本机(localhost 或 127.0.0.1)该参数可以省略;-u
登录的用户名;-p
告诉服务器将会使用一个密码来登录,如果所要登录的用户名密码为空,可以忽略此选项;-P <端口号>
如果使用默认端口 3306 该参数可以省略。
输入 exit
或 quit
退出登录。
F:\web\mysql-8.0.17-winx64\bin>net start mysql
MySQL 服务正在启动 ..
MySQL 服务已经启动成功。
F:\web\mysql-8.0.17-winx64\bin>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.17 MySQL Community Server - GPL
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> quit
Bye
F:\web\mysql-8.0.17-winx64\bin>net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。
F:\web\mysql-8.0.17-winx64\bin>
连接到 MySQL 需要以下信息:
- 主机名(计算机名)—— 如果连接到本地 MySQL 服务器,为
localhost
; - 端口(如果使用默认端口 3306 之外的端口);
- 一个合法的用户名;
- 用户口令(如果需要)。
在连接之后,就可以访问登录名能够访问的数据库和表了。
修改 root 密码
方法 1: 用 SET PASSWORD 命令
首先登录 MySQL。
格式:mysql> set password for 用户名@localhost = password('新密码');
例子:
mysql> set password for root@localhost = password('123');
方法 2:用 mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例子:
mysqladmin -uroot -p123456 password 123
方法 3:用 UPDATE 直接编辑 user 表
首先登录 MySQL。
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;
如果没有成功,使用下面的命令:
update user set authentication_string=password("123456"),plugin='mysql_native_password' where user='root';
方法 4:在忘记 root 密码的时候,可以这样:
- 关闭正在运行的 MySQL 服务。
- 打开 DOS 窗口,转到 mysql\bin 目录。
- 输入
mysqld --skip-grant-tables
回车。--skip-grant-tables
的意思是启动 MySQL 服务的时候跳过权限表认证。 - 再开一个 DOS 窗口(因为刚才那个 DOS 窗口已经不能动了),转到 mysql\bin 目录。
- 输入
mysql
回车,如果成功,将出现 MySQL 提示符 >。 - 连接权限数据库:
use mysql;
。 - 改密码:
update user set password=password("123") where user="root";
。 - 刷新权限(必须步骤):
flush privileges;
。 - 退出
quit
。 - 注销系统,再进入,使用用户名 root 和刚才设置的新密码 123 登录。
方法 5:用 ALTER USER(建议)
8.0 以上版本修改密码使用:ALTER user 'root'@'localhost' IDENTIFIED BY '你的密码';
首先登录 MySQL。
mysql> alter user 'root'@localhost identified by '123456';
Query OK, 0 rows affected (0.11 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.04 sec)