每日一听


下载MySQL安装包


进入MySql下载地址下载MySql压缩包:
Mysql5.7下载


进入MySql下载地址下载MySql压缩包:
Mysql8.0下载

配置MySQL数据库

将压缩包解压至指定目录,示例解压到 D:\mysql 路径下
新建 my.ini 配置文件

[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
 
[mysqld]
# 设置数据库端口
port = 3306
# 设置mysql的安装目录
basedir=D:\\mysql\\mysql-8.0.32
# 设置 mysql数据库的数据的存放目录
# 系统会自己生成,配置此项有可能会报错
#datadir=D:\\mysql\\mysql-8.0.32\\data
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 有的人需要设置此项,不然可能会报错,
# 其原因是从5.6开始,timestamp的默认行为已经是deprecated了
#show_compatibility_56 = ON

初始化MySQL数据库

管理员身份运行命令提示符,切记一定要是以管理员身份运行,不然权限不够会报错

# 进入D盘
C:\WINDOWS\system32>D:

# 进入到MySql安装目录下的bin目录
D:\>cd mysql\mysql-8.0.32\bin

# 初始化MySql数据库
D:\mysql\mysql-8.0.32\bin>mysqld --initialize --user=mysql --console

初始化成功后会产生一个默认密码,一定要复制这个默认密码

初始化数据库

如果遇到 MSVCP140.dll 缺失
前往 微软官网 下载 Visual Studio 即可解决

注册MySQL服务

mysqld --install [服务名],服务名可以自定义

D:\mysql\mysql-8.0.32\bin>mysqld --install mysql80

启停MySQL服务

注意:启动/停止MySql服务都需要以管理员身份运行

# 启动MySql服务
C:\WINDOWS\system32>net start mysql
# 关闭MySql服务
C:\WINDOWS\system32>net stop mysql
# 重启MySql服务
C:\WINDOWS\system32>net restart mysql

配置MySQL环境变量

添加如下环境变量

变量名变量值
MYSQL_HOMEmysql\mysql-8.0.32
Path%MYSQL80_HOME%\bin

修改MySQL数据库密码

登录数据库

D:\>mysql -u root -p

按照提示输入刚才复制的密码
登录数据库

设置新密码

在安装完成之后,登录到数据库,不管执行任何命令,都会出现以下错误:

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

解决方式如下:

MySQL 版本 5.7.6 版本以前用户可以使用如下命令:

mysql> SET PASSWORD = PASSWORD('Root123.');

MySQL版本5.7.6版本开始的用户可以使用如下命令:

mysql> ALTER USER USER() IDENTIFIED BY 'Root123.';

如果要设置简单密码,需要修改密码策略。

查看密码策略

mysql> SHOW VARIABLES LIKE 'validate_password.%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+

如果返回以下结果,原因为没有安装 validate_password 插件,就不需要修改密码策略,直接修改密码即可

mysql> SHOW VARIABLES LIKE 'validate_password.%';
Empty set, 1 warning **(**0.00 sec**)**

如果需要安装 validate_password 插件,具体操作如下:

mysql**>** INSTALL COMPONENT **'file://component_validate_password'**;
Query OK, 0 rows affected **(**0.10 sec**)**

mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+

修改密码策略

--密码验证策略低要求(0或LOW代表低级)
set global validate_password.policy=LOW;
--密码至少要包含的小写字母个数和大写字母个数
set global validate_password.mixed_case_count=0;
--密码至少要包含的数字个数。
set global validate_password.number_count=0; 
# 密码至少要包含的特殊字符数
set global validate_password.special_char_count=0; 
# 密码长度
set global validate_password.length=4;
# 用户名与密码相同
set global  validate_password.check_user_name=OFF

变量含义

validate_password.check_user_name

是否将密码与当前会话的有效用户帐户的用户名部分进行比较,如果匹配则拒绝它们。除非已安装,否则此变量不可用。
因此如果这里为ON,那么就不能把账号和密码设置为相同的值

validate_password.dictionary_file

用于检查密码的字典文件的路径名。除非已安装,否则此变量不可用。

validate_password.length

需要密码的最少字符数。除非已安装,否则此变量不可用。
validate_password.length 最小值是其他几个相关系统变量的函数。该值不能设置为小于此表达式的值:

validate_password.number_count

  • validate_password.special_char_count
  • (2 * validate_password.mixed_case_count)

validate_password.mixed_case_count

如果密码策略更强或更高,则要求密码具有的最小小写和大写字符数。除非已安装,否则此变量不可用。
对于给定的 validate_password.mixed_case_count 值,密码必须包含那么多小写字符和那么多大写字符。

validate_password.number_count

如果密码策略更强或更高,则要求密码具有的最小数字(数字)字符数。除非已安装,否则此变量不可用。

validate_password.policy

由 强制执行的密码策略。除非已安装,否则此变量不可用。
validate_password.policy 会影响其其他策略(不包括validate_password.check_user_name)设置系统变量的使用方式,例如,设置为LOW将只检查长度。
validate_password.policy 值可以使用数值 0、1、2 或相应的符号值 来指定,。下表描述了为每个策略执行的测试:

PolicyTests Performed
0 orL OWLength
1 or MEDIUMLength; numeric, lowercase/uppercase, and special characters
2 or STRONGLength; numeric, lowercase/uppercase, and special characters; dictionary file

validate_password.special_char_count

如果密码策略更强或更高,则要求密码具有的最小非字母数字字符数。除非已安装,否则此变量不可用。 validate_passwordMEDIUMvalidate_password

修改密码

# 修改密码
mysql> alter user 'root'@'localhost' identified by '满足策略的密码';

# 按mysql_native_password加密方式修改密码
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '满足策略的密码';
最后修改:2023 年 09 月 18 日
温柔的好天气总是和我一样,帅的鸭皮!