# Linux
**CentOS**
1、下载MySQL官方的 Yum Repository
https://dev.mysql.com/downloads/repo/yum/
```bash
wget -i https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
```
2、安装
```bash
#安装数据源
yum -y install mysql80-community-release-el8-1.noarch.rpm
#检查数据源
yum repolist enabled | grep "mysql.*-community.*"
#禁用CentOS8自带mysql模块
yum module disable mysql
#安装数据库
yum -y install mysql-community-server
```
3、配置密码
```bash
# 启动mysql
systemctl start mysqld.service
# 查看运行状态
systemctl status mysqld.service
# 找到root用户初始随机密码
grep "password" /var/log/mysqld.log
grep 'temporary password' /var/log/mysqld.log
# 使用密码进入mysql
mysql -u root -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'wyd19940118(new password)';
#查看密码策略
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 | LOW |
| validate_password.special_char_count | 1 |
+--------------------------------------+-------+
#修改密码策略
set global validate_password.policy=LOW; //设置密码的验证强度等级为长度
set global validate_password.length=6; //密码验证长度重新赋值
0/LOW:只验证长度
1/MEDIUM:验证长度、数字、大小写、特殊字符
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件
```
4、配置远程访问
```bash
#创建权限用户记录
create user 'root'@'%' identified by 'Wyd19940118@';
# 授权(命令开启的IP是192.168.0.1,如要开启所有的,用%代替IP)
grant all privileges on *.* to 'root'@'%' with grant option;
#grant all privileges on *.* to 'root'@'192.168.0.1' identified by 'password' with grant option;
flush privileges;
exit
```
5、远程登录
```bash
mysql -h 39.106.250.172 -P 3306 -u root -p
```
6、开放防火墙端口
```bash
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
```
7、更改mysql编码格式(utf8mb4是utf8的超集,可不用改)
```bash
# 登录
mysql -uroot -p
# 查询状态
status
# 退出
exit
# 修改配置文件
vim /etc/my.cnf
=========================================================
[client]
default-character-set=utf-8
...
[mysqld]
...
character-set-server=utf-8
collation-server=utf8_general_ci
=========================================================
# 重启mysql服务
systemctl restart mysqld.service
# 查询状态
status
```
**Ubuntu**
1、安装
```bash
# 包安装
sudo apt install mysql-server
```
2、初始化配置
```bash
sudo mysql_secure_installation
```
```bash
#1
VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (选择N ,不会进行密码的强校验)
#2
Please set the password for root here...
New password: (输入密码)
Re-enter new password: (重复输入)
#3
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : N (选择N,不删除匿名用户)
#4
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N (选择N,允许root远程连接)
#5
By default, MySQL comes with a database named 'test' that
anyone can access...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N (选择N,不删除test数据库)
#6
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (选择Y,修改权限立即生效)
```
3、运行服务
```bash
systemctl start mysql.service
```
4、配置
```bash
# 找到 bind-address 修改值为 0.0.0.0(如果需要远程访问)
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf #找到 bind-address 修改值为 0.0.0.0(如果需要远程访问)
systemctl restart mysql.service
sudo mysql -u root -p
##设置权限与密码
#使用mysql_native_password修改加密规则
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
#设置永不过期的用户密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER; (不管用)
#允许远程访问
mysql> UPDATE user SET host = '%' WHERE user = 'root';
#刷新cache中配置 刷新权限
mysql> flush privileges;
#退出
mysql>quit;
######一个是本地root@localhost登录密码,一个是远程root@%(IP)登录的密码#######
#修改本地登录密码(mysqladmin -u用户名 -p旧密码 password 新密码)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
#修改远程登录密码
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
#新增用户赋权并设置远程访问
#必须先创建用户(密码规则:mysql8.0以上密码策略限制必须要大小写加数字特殊符号)
mysql> CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
#授权
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
#修改加密方式
mysql> update user set plugin='mysql_native_password' where user='root'
```
5、远程登录
```bash
mysql -h 39.106.250.172 -P 3306 -u root -p
```
# Windows平台client
1、下载msi
https://dev.mysql.com/downloads/
2、安装
# Windows平台server
1、下载zip安装包并解压缩到安装目录
https://dev.mysql.com/downloads/
2、添加环境变量到系统path
3、配置初始化my.ini文件
在安装目录下创建my.ini文件。
```
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\\Program Files\\mysql-8.0.26-winx64 # 切记此处一定要用双斜杠\\,单斜杠我这里会出错,不过看别人的教程,有的是单斜杠。自己尝试吧
# 设置mysql数据库的数据的存放目录
datadir=D:\\Data\\MySQL\\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
```
注意:其中的data目录不需要事先创建,下一步初始化工作中会自动创建
4、初始化数据库
```bash
# 在MySQL安装目录的 bin 目录下执行命令
mysqld --initialize --console
```
执行完成后,会打印 root 用户的初始默认密码,在没有更改密码前,需要记住这个密码,后续登录需要用到。关快了,或者没记住,那也没事,删掉初始化的 data 目录,再执行一遍初始化命令,又会重新生成的。当然,也可以使用安全工具,强制改密码,用什么方法,自己随意。
5、安装服务
```bash
# 在MySQL安装目录的 bin 目录下执行命令
mysqld --install [服务名]
```
后面的服务名可以不写,默认的名字为 mysql。当然,如果你的电脑上需要安装多个MySQL服务,就可以用不同的名字区分了。
```bash
# 需要管理员身份运行CMD
net start mysql #启动服务
net stop mysql #停止服务
sc query mysql #查询服务状态
sc delete mysql -remove #删除服务
```
6、更改密码
```bash
# 在MySQL安装目录的 bin 目录下执行命令
mysql -u root -p
# 这时候会提示输入密码,记住了上面第3.1步安装时的密码,填入即可登录成功,进入MySQL命令模式,默认端口3306。
# 在MySQL中执行命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
```
7、登录服务器
```mysql
mysql -u root -p
password:123456
#-p后面不要加空格,-p为密码参数
```
# Navicat工具
1、下载
官网安装包:https://www.navicat.com.cn/download/navicat-premium
破解工具:百度云
2、安装
断网安装,先打开破解工具,再进行安装,patch项选中安装的exe文件,生成密钥,注册激活。
# Workbench工具
1、下载安装包
https://dev.mysql.com/downloads/workbench/
2、安装
直接next。
# SQLyog工具
1、下载安装包
2、安装
# 常用命令
```sql
#选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库
use School;
#列出 MySQL 数据库管理系统的数据库列表
SHOW DATABASES;
#显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库
SHOW TABLES;
#显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息
SHOW COLUMNS FROM School;
#显示数据表的详细索引信息,包括PRIMARY KEY(主键)
SHOW INDEX FROM School;
#输出Mysql数据库管理系统的性能及统计信息
SHOW TABLE STATUS [FROM School LIKE 'pattern'] \G;
```