MySql的windwos和linux的安装及配置

5. 一. 前言

在IT界 一般都不会轻易的使用最新版本的软件,因为新版本可能会出现各种问题
(你原本项目跑的好好的 非要画蛇添足更新版本 然后项目奔溃)
小段子:
	更新完没事 那么你还是一个普通员工
	更新完出事 那么你就是一名"烈士"

# 补充1: MySQL有很多版本(5.6、5.7、8.0) 目前企业里面用的比较多的还是5.6左右.

# 补充2: MySql默认端口3306

二. windows

1. 安装

官网下载地址: https://www.mysql.com

第一步:

第二步:

第三步:

第四步:

第五步:

扫描二维码关注公众号,回复: 11163378 查看本文章

2. 配置环境变量

第一步:

第二步:

第三步:

第四步:

第五步:

第六步:

第七步:

3. 配置服务端mysqld.exe

注意!!!: 服务端的配置要使用管理员的身份启动DOS命令行.

第一步:

第二步:

4. 登录客户端mysql

第一步:

第二步:

5. 客户端修改密码

6. 配置客户端配置文件

提示:配置文件默认在登陆时就会检测mysql-5.6.45-winx64文件夹下的.ini后缀名的文件.

目的1:统一字符编码

目的2: 以后不需要指定 iP, 端口, 用户名, 密码

解决: 到mysql-5.6.45-winx64文件夹下自定义my.ini文件. (提示: 默认mysql在启动时就会去读取配置文件, 添加了配置文件以后, 需要重启mysqld服务端)

;参数解析
    ;[mysqld]  -—> bin目录下的命令名
    ;[client]  --> 所有的客户端的全局性配置, 如果登陆时[mysql]中没有指定用户名, 密码而[client] 中指定了, 以[client] 为准
    ;[mysql]   --> mysql客户端的配置, 如果没有指定就以[client]为准

;补充:  5.6.38版本 没有用户名会报错    5.6.40版本 没有用户名不会报错

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

;这里指定你的登录用户名, 登陆时自动检测就不用每次来都需要输入用户名. --> `-uroot`
user="root"

;这里可以指定你的登录密码, 登录时自动检测就不用每次来都需要输入密码. ---> `-p123`
password="123"  

7. 登录验证

8. 破解密码

原理: 客户端输入密码就会到服务端的配置文件中核验. 核验位置: mysql-5.6.45-winx64\data\mysql下的三个文件. user.frm, use.MYD, user.MYI

破解方式一: 暴力破解. 只适合用于mysql安装没多久

  • 删除mysql-5.6.45-winx64\data下的文件, 重新初始化一遍

破解方式二: 让服务端跳过密码权限表机制

# 步凑
1、首先,关掉Mysql进程。 
2、运行 mysqld --skip-grant-tables 
3、打开另一个命令窗口 运行mysql即可去修改密码
4. 刷新权限. flush privileges; 
5. 关闭运行 mysqld --skip-grant-tables的DOS命令行端口. 
6. 以管理员方式打开cmd. 重启mysql --> net start mysql
7. 登录

9. 命令总结 + 补充命令

# 1. windsows + r 键  根据你所输入的名称,为你打开相应的程序、文件夹、文档或Internet资源。
cmd 打开DOS界面并可以输入cmd命令
services.msc 查看系统服务


# 2. windows中管理员打开DOS界面输入cmd命令
mysqld –-install  把数据库服务端在后头运行的系统服务(注意:需要管理员权限)
mysqld –-remove   把数据库服务端为后台运行的服务卸载(注意:要把该程序先stop关闭)

mysqld --skip-grant-tables  跳过mysqld服务端密码检测机制表(注意: 需要先关闭服务端, 并且开启新的DOS界面登录)
mysqladmin -uroot -p原密码 password 新密码  改命令直接在终端输入即可 无序进入客户端

mysqld --verbose –-help | findstr bind  使用管道命令查看绑定IP用法
mysqld --bind--address=IP地址  绑定mysqld的IP地址


# 3. mysql客户端连接mysql服务端命令: 再cmd命令行输入以下命令
完整写法: (可以本地也可以远程)
	mysql -h 服务端IP(如果是本次测试就指定127.0.0~255都行. 如果不是就指定服务端的公网IP地址) -P 3306(mysql服务端固定的熟知端口号) -u用户名 -p密码(注意: 密码的指定这里要紧跟其后, 且密码有空格还需要被双引号包裹)
缩写方式一: (本地登录. 如果没有配置my.ini文件, 默认普通用户. 如果配置了my.ini文件, 安装配置中的为准)
	mysql
缩写方式二: (本地登录)
	mysql -u用户 -p密码


# 4. mysql命令行命令
update mysql.user set password=password('密码') where user='roort';   5.6.45 MySQL版本修改密码
update mysql.user set authentication_string=password('密码') where user='roort';   5.7.25 MySQL版本中的mysql库下的user表中的密码字段从默认5.6.45 MySQL版本编变成了authentication_string. 
update mysql.user set password_expired='N' where user='roort';  5.7.25 MySQL版本默认密码过期, 指定为密码不过期
flush privileges;  刷新权限. 只要是修改了mysql库中的数据就需要指定.
\G  在MySQL的sql语句后加上\G,表示将查询结果进行按列打印,可以使每个字段打印到单独的行。即将查到的结构旋转90度变成纵向;
\s   直接输入\s. 查看数据库中的默认的字符编码, 版本, 当前登录用户等等信息.
\c   在MySQL的sql语句后加上\c代表这条mysql语句不要了
quit  或者  exit   退出mysql

# 5. 补充: windows的cmd命令
taskkill /F /IM mysqld.exe 指定进程名杀死该进程
taskkill /F /PID 进程pid号  指定进程PID杀死改进程(只有在管理员cmd窗口下才能成功)

三. linux

1. 服务端下载

我这里下载mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz版本. 进入linux后用命令下载

mkdir /opt/mysql
cd /opt/mysql
wget /tmp/https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

2. 服务端环境配置

# 1. 安装前,我们可以检测系统是否自带安装 MySQL
rpm -qa | grep mysql


# 2. 如有,类似 mysql-libs-5.1.52-1.el6_0.1.x86_64那可以选择进行卸载:
# rpm -e mysql-libs-5.1.52-1.el6_0.1.x86_64  # 普通删除模式
# rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64  # 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除


# 3. 检查否存在 mariadb 数据库,如有,卸载之,卸载同上
rpm -qa | grep mariadb


# 4. 如有,类似 mariadb-libs-5.5.56-2.el7.x86_64.  则 卸载
# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

3. 服务端安装

# 1. 进入安装包所在目录,解压文件
cd /opt/mysql
tar -zxvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz


# 2. 重命名
mv mysql-5.7.25-linux-glibc2.12-x86_64 mysql-5.7.25


# 3. 添加系统mysql组和mysql用户. 检查mysql组和用户是否存在,如无创建. 类似这种格式 mysql:x:490:  或者这种格式 mysql:x:496:490::/home/mysql:/bin/bash
cat /etc/group | grep mysql


# 4. 以上为存在的情况,如无,执行添加命令:
groupadd mysql
useradd -r -g mysql mysql   # useradd -r参数表示mysql用户是系统用户,不可用于登录系统


# 5. 安装数据库, 并创建data目录
cd /opt/mysql/mysql-5.7.25
mkdir data


# 6. 将/opt/mysql/mysql-5.7.25的所有者及所属组改为mysql
chown -R mysql.mysql /opt/mysql/mysql-5.7.25


# 7. 在/opt/mysql/mysql-5.7.25/support-files目录下创建my_default.cnf. 
vim /opt/mysql/mysql-5.7.25/support-files/my_default.cnf


# 8. 复制以下内容, 使用i模式, 鼠标右键复制进去. 再使用`Esc`键退出修改, 使用`:wq`保存退出. (提示: 以下的;是cnf文件的注释符号, 需要生效去除即可. )
[mysqld]
;skip-grant-tables  ;这里是跳过密码机制表, 可以不使用密码登录. 目的是用来破解密码等下有用.

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

basedir = /opt/mysql/mysql-5.7.25
datadir = /opt/mysql/mysql-5.7.25/data

bind-address=0.0.0.0
port = 3306  ;mysql默认端口3306
socket = /tmp/mysql.sock
character-set-server=utf8
 
log-error = /opt/mysql/mysql-5.7.25/data/mysqld.log
pid-file = /opt/mysql/mysql-5.7.25/data/mysqld.pid

[mysql]
protocol=tcp  ;如果不指定. 无法通过socket'/var/run/mysqld/mysqld连接到本地MySQL服务器. 也就是说客户端无法通过网络进行连接


# 9. 拷贝,如果提示是否覆盖,y
cp -p /opt/mysql/mysql-5.7.25/support-files/my_default.cnf /etc/my.cnf


# 10. 初始化 mysqld
cd /opt/mysql/mysql-5.7.25
yum install -y libaio  # 安装后在初始化就OK了
./bin/mysqld --initialize --user=mysql --basedir=/opt/mysql/mysql-5.7.25/ --datadir=/opt/mysql/mysql-5.7.25/data/ 


# 11. 初始化完成之后,查看日志中的临时密码
cat /opt/mysql/mysql-5.7.25/data/mysqld.log


# 2019-04-08T06:14:29.790033Z 1 [Note] A temporary password is generated for root@localhost: a8?DQir=T+k+

# 12. 把启动脚本放到开机初始化目录
cp /opt/mysql/mysql-5.7.25/support-files/mysql.server /etc/init.d/mysql


# 13. 启动mysql服务
service mysql start


# 14. 配置环境变量. 
vim /etc/profile  # 进入以后使用i模式, 写入以下内容. 如果有空格就需要加双引号. 如: "$PATH:/opt/mysql/mysql-5.7.25/bin". 写完内容以后`Esc`退出修改, 使用`:wq`保存退出.
export PATH=$PATH:/opt/mysql/mysql-5.7.25/bin


# 15. 使用source命令使修改立刻生效
source  /etc/profile


# 16. 登录mysql,密码为初始密码. 第11步指定的密码. 如果无效请看接下来的通过跳过密码检测机制表破解密码.
cd /opt/mysql/mysql-5.7.25
./bin/mysql -u root -p


# 17. 修改密码. 
# 注意1:  因为是5.7.25版本密码从5.6版本的password修改成了anthentication_string. 
# 注意2:  5.7.25版本的password_expired字段密码默认过期是Y, 我们下面要修改, 然密码不过期. 5.6则没有这种问题
# update mysql.user set password=password('123456') where user='root';
update mysql.user set anthentication_string=password('123456') where user='root';
update mysql.user set password_expired='N' where user='root';
flush privileges;
quit

# 18. 添加远程访问权限. 让所有的客户端进行访问默认localhost要修改为%
update mysql.user set host='%' where user='root';
flush privileges;


# 19. 重启mysql生效
# service mysql stop
# service mysql start  # 或
service mysql restart

python4. 服务端密码破解

# 1. 编辑/etc/my.cnf文件, 输入`i`进入修改模式, 将上面第8步的`;`注释符取出. 输入`Esc`退出修改模式, 再输入`:wq`保存并退出文件.
vim /etc/my.cnf


# 2. 重启服务端
service mysql restart


# 3. 由于上面设置了环境变量. 直接登录mysql. 密码不用输入直接回车
mysql -uroot -p


# 4. 修改密码, 指定密码永久生效, 刷新权限, 退出
update mysql.user set authentication_string=password('指定你的密码') where user='root';
update mysql.user set password_expired='N' where user='root';
flush privileges;
quit


# 5. 编辑/etc/my.cnf文件, 输入`i`进入修改模式, 将上面第8步的skop-grant-tables前添加`;`注释符 输入`Esc`退出修改模式, 再输入`:wq`保存并退出文件.
vim /etc/my.cnf


# 6. 重启服务端
service mysql restart

# 7. 正常登录. 接着下面输入你的密码.
mysql -uroot -p

5. 客户端连接

前提: 防火墙的入口方向是允许的, 服务端开启了你当前子网的外网IP访问权限 + 3306端口

如何查看你当前子网的外网IP? 打开浏览器输入ip就能查看.

# 进入cmd本地命令行输入以下命令. 提示: 以下-p输入密码密码如果有空格需要指定双引号包含, -p后面必须紧跟密码.
mysql -h 服务端的公网Ip -P 3306 -u用户(如果是root用户就直接指定root) -p密码

6. 可能遇见的错误

7. Linux环境变量配置的三个方法

https://www.cnblogs.com/jpfss/p/6560703.html

猜你喜欢

转载自www.cnblogs.com/yang1333/p/12814075.html