mysql二进制安装及破解密码

二进制安装mysql

mysql 官网 https://www.mysql.com/

在这里插入图片描述

往下滑看到MySQL Community (GPL) Downloads »点击进去
在这里插入图片描述
点击进来之后看到Download Archives 点击进去
在这里插入图片描述
看到MySQL Community Server 点击
在这里插入图片描述
点击下载Download
在这里插入图片描述

# 二进制MySQL包我已提前下载好,使用xftp传到/opt/目录下
[root@localhost opt]# ls
mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz

# 解压,并改为mysql
## 解压到/usr/local/
[root@localhost opt]# tar xf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@localhost local]# ls
bin  etc  games  include  lib  lib64  libexec  mysql-5.7.37-linux-glibc2.12-x86_64  sbin  share  src
[root@localhost local]# mv mysql-5.7.37-linux-glibc2.12-x86_64 mysql
[root@localhost local]# ls
bin  etc  games  include  lib  lib64  libexec  mysql  sbin  share  src

# 创建mysql系统用户,没有家目录,不需要登录
[root@localhost opt]# useradd -r -M -s /sbin/nologin mysql


#修改目录/usr/local/mysql的属主属组
[root@localhost local]# chown -R mysql.mysql mysql
.......省略
drwxr-xr-x. 9 mysql mysql 129 Jun 28 16:13 mysql
......省略

# 添加环境变量(你也可以直接vim 写到/etc/profile.d/mysql.sh下面)
[root@localhost ~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
#让其生效
[root@localhost ~]# source /etc/profile.d/mysql.sh 
[root@localhost ~]# which mysqld
/usr/local/mysql/bin/mysqld

# 配置include
## 软链接到/usr/include/mysql,叫mysql
[root@localhost ~]# ln -s /usr/local/mysql/include /usr/include/mysql

# 配置 man 文档
[root@localhost ~]# vim /etc/man_db.conf
MANDATORY_MANPATH   /usr/local/share/man
MANDATORY_MANPATH   /usr/local/mysql/man # 添加这条

# 映射库文件
[root@localhost ~]# vim /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib
[root@localhost ~]# ldconfig # 让其生效

# 建立数据存放目录
[root@localhost ~]# mkdir /opt/data
# 设置所有者和所属组为mysql
[root@localhost ~]# chown -R mysql.mysql /opt/data/
[root@localhost ~]# ll /opt/data/ -d
drwxr-xr-x. 2 mysql mysql 6 Jun 28 16:36 /opt/data/

# 初始化数据库
[root@localhost ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/opt/data/
.....省略
root@localhost: OL;CyL6)h5Do  # 临时密码
# 请注意,这个命令的最后会生成一个临时密码,此处密码是OL;CyL6)h5Do
# 再次注意,这个密码是随机的,你的不会跟我一样,一定要记住这个密码,因为一会登录时会用到


# 生成配置文件
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
sql-mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


# 配置服务启动脚本
[root@localhost support-files]# pwd
/usr/local/mysql/support-files

[root@localhost support-files]# cp mysql.server mysqld
[root@localhost support-files]# ll
...省略
-rwxr-xr-x. 1 root  root  10576 Jun 28 16:56 mysqld
-rwxr-xr-x. 1 mysql mysql 10576 Nov 30  2021 mysql.server
# 设置所有者所属组为mysql
[root@localhost support-files]# chown -R mysql.mysql mysqld
[root@localhost support-files]# ll
....省略
-rwxr-xr-x. 1 mysql mysql 10576 Jun 28 16:56 mysqld
-rwxr-xr-x. 1 mysql mysql 10576 Nov 30  2021 mysql.server


# 启动mysql
[root@localhost ~]# /usr/local/mysql/support-files/mysqld start


[root@localhost ~]#  ps -ef|grep mysql
root       10713       1  0 17:05 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/opt/data --pid-file=/opt/data/mysql.pid
mysql      10913   10713  0 17:05 pts/1    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/opt/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=localhost.localdomain.err --pid-file=/opt/data/mysql.pid --socket=/tmp/mysql.sock --port=3306
root       10944   10666  0 17:06 pts/1    00:00:00 grep --color=auto mysql

[root@localhost ~]# ss -antl
State   Recv-Q  Send-Q   Local Address:Port  Peer Address:Port   Process        
LISTEN    0     128          0.0.0.0:22         0.0.0.0:*                          
LISTEN    0     128           [::]:22             [::]:*                          
LISTEN    0     80           *:3306               *:*   


# 使用临时密码登录
[root@localhost ~]# mysql -uroot -p'OL;CyL6)h5Do'
....省略
 # 看到这个ok
mysql> 

# 修改密码
mysql> set password = password('tkl9639@G');
## 退出使用设置好的密码登录
[root@localhost ~]# mysql -uroot -ptkl9639@G
....省略
mysql> 

配置mysql.service文件

# 关闭防火墙和SElinux
[root@localhost ~]# systemctl disable --now firewalld
# 临时关闭
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive

# 永久关闭
[root@localhost ~]# head -7 /etc/selinux/config | tail -1
SELINUX=disabled

# 杀死 mysql 进程
[root@localhost ~]# pkill mysqld

# 复制到当前目录下、更改它
[root@localhost ~]# cp /usr/lib/systemd/system/sshd.service mysqld.service
[root@localhost ~]# vim mysql.service 
[Unit]
Description=mysql server daemon
After=network.target sshd-keygen.target
[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysqld start
ExecStop=/usr/local/mysql/support-files/mysqld stop
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

# 移动到 /usr/lib/systemd/system/ 下面
[root@localhost ~]# mv mysqld.service  /usr/lib/systemd/system/
# 刷新程序、让其生效
[root@localhost ~]# systemctl daemon-reload
# 查看状态
[root@localhost ~]# systemctl status mysqld
● mysql.service - mysql server daemon
   Loaded: loaded (/usr/lib/systemd/system/mysql.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

# 设置为开机自启、并立马启动
[root@localhost ~]# systemctl enable --now mysqld
[root@localhost ~]# systemctl status mysqld
● mysql.service - mysql server daemon
   Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2022-06-28 17:31:24 CST; 11s ago
  Process: 1649 ExecStart=/usr/local/mysql/support-files/mysqld start (code=exited, status=0/SUCCESS)
 Main PID: 1662 (mysqld_safe)
.....省略

[root@localhost ~]# ss -antl
State   Recv-Q  Send-Q   Local Address:Port  Peer Address:Port   Process        
LISTEN    0     128          0.0.0.0:22         0.0.0.0:*                          
LISTEN    0     128           [::]:22             [::]:*                          
LISTEN    0     80           *:3306               *:*   

报错信息

# 登录时报错
[root@localhost ~]# mysql -uroot -p'OL;CyL6)h5Do'
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

# 需要这个库文件libncurses.so.5
 
# 查找这个库由哪个包提供
[root@localhost ~]# dnf provides libncurses.so.5
Last metadata expiration check: 0:35:59 ago on Tue 28 Jun 2022 04:33:57 PM CST.
ncurses-compat-libs-6.1-9.20180224.el8.i686 : Ncurses compatibility libraries
Repo        : BaseOS
Matched from:
Provide    : libncurses.so.5

# 安装 ncurses-compat-libs (再去登录ok)
[root@localhost ~]# dnf -y install ncurses-compat-libs

破解mysql密码

# 配置文件
[root@localhost ~]# cat /etc/my.cnf 
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
sql-mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
skip-grant-tables # 加入这一行 跳过授权表

# 重启MySQL
[root@localhost ~]# systemctl restart mysqld
# 登录MySQL ## 这时候不需要密码
[root@localhost ~]# mysql
......省略

# 进入MySQL数据库里面
mysql> use mysql

mysql> update user set authentication_string = password('tkl9639@G') where User = 'root';
# 重新配置文件
[root@localhost ~]# vim /etc/my.cnf 
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
sql-mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

# 重启mysql
[root@localhost ~]# systemctl restart mysqld
# 登录MySQL
[root@localhost ~]# mysql -uroot -ptkl9639@G
......省略

mysql> 

mysql配置文件

mysql 的配置文件为/etc/my.cnf

配置文件查找次序:若在多个配置文件中均有设定,则最后找到的最终生效

/etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
# 优先级最低 /etc/my.cnf
# 优先级最高 ~/.my.cnf

mysql常用配置文件参数

参数说明
port = 3306设置监听端口
socket = /tmp/mysql.sock指定套接字文件位置
basedir = /usr/local/mysql指定MySQL的安装路径
datadir = /data/mysql指定MySQL的数据存放路径
pid-file = /data/mysql/mysql.pid指定进程ID文件存放路径
user = mysql指定MySQL以什么用户的身份提供服务
skip-name-resolve禁止MySQL对外部连接进行DNS解析 使用这一选项可以消除MySQL进行DNS解析的时间。 若开启该选项,则所有远程主机连接授权都要使用IP地址方 式否则MySQL将无法正常处理连接请求
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值