mysql安装

为什么要使用数据库

较⼤数据量( InnoDB存储引擎的表空间最⼤容量为64TB,不具体限制单表的⼤⼩,但受限于表空间 )
⾼性能要求
⽹络控制
并发访问
事务控制(事务的四个基本特性是ACID:原⼦性 ⼀致性 隔离性 持久性)
持久化和数据安全
查询数据需求逻辑复杂

数据库分类

关系型数据库:

  • MySQL
  • Oracle
  • SQL Server
  • PostgreSQL

⾮关系型数据库:

  • redis:键值型数据库
  • mongoDB: ⽂档型数据库
  • etcd 分布式储存key value
  • zk 分布式储存key value
  • hadoop:存放⼤数据
  • Cassandra:分布式数据库

最显著的区别: 是否使⽤结构化查询语句(SQL)

数据库安装

1、YUM安装数据库
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

//列出所有MySQL发⾏版仓库
[root@sql ~]# yum repolist all|grep mysql

//禁⽤8.0发⾏版仓库, 启⽤5.7发⾏版仓库
[root@sql ~]# yum install yum-utils
[root@sql ~]# yum-config-manager --disable mysql80-community
[root@sql ~]# yum-config-manager --enable mysql57-community
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[root@sql ~]# yum install -y mysql-community-server --nogpgcheck
[root@sql ~]# systemctl start mysqld
[root@sql ~]# systemctl enable mysqld

MySQL服务器初始化(仅适⽤于MySQL 5.7)在服务器初始启动时,如果服务器的数据⽬录为空,则会发⽣以下情
况:
服务器已初始化。
在数据⽬录中⽣成SSL证书和密钥⽂件。
validate_password插件安装并启⽤。
超级⽤户帐户'root'@'localhost'已创建。
超级⽤户的密码被设置并存储在错误⽇志⽂件中。要显示它,请使⽤以下命令:
[root@sql ~]# grep "password" /var/log/mysqld.log
2023-05-20T09:52:10.486810Z 1 [Note] A temporary password is generated for
root@localhost: 0?=FYrw#kzFs

通过使⽤⽣成的临时密码登录并尽快更改 root 密码并为超级⽤户帐户设置⾃定义密码
[root@sql ~]# mysql -uroot -p'0?=FYrw#kzFs'
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Qazx@123';

注意
MySQL 的 validate_password 插件默认安装。将要求密码⾄少包含⼤写、⼩写、数字、特殊字符、并且总
密码⻓度⾄少为8个字符。

 mysql -uroot -p'Qazx@123'

2、二进制安装
采⽤⼆进制免编译⽅式安装 MySQL , 不需要复杂的编译设置和编译时间等待,解压下载的软件包,初始化即可完
成 MySQL 的安装和启动。
二进制包下载地址:     https://dev.mysql.com/downloads/mysql/5.7.html#downloads
二进制安装官方手册:       https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html

# 基础环境准备

//关闭防火墙
[root@i-m60lx3hh ~]#  systemctl stop firewalld
[root@i-m60lx3hh ~]# systemctl disable firewalld
[root@i-m60lx3hh ~]#  setenforce 0

// 建立用户与相应目录
[root@i-m60lx3hh ~]#  groupadd mysql
[root@i-m60lx3hh ~]# useradd -r -g mysql -s /sbin/nologin mysql
[root@i-m60lx3hh ~]# mkdir /soft/src -p && cd /soft/src

//下载并安装
[root@i-m60lx3hh src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
[root@i-m60lx3hh src]# tar xf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /soft
[root@i-m60lx3hh src]# ln -s /soft/mysql-5.7.30-linux-glibc2.12-x86_64/ /soft/mysql     # 软链

# 进行mysql初始化

// 创建初始化目录以及数据库数据目录
[root@i-m60lx3hh soft]# mkdir /soft/mysql/{mysql-file,data}
[root@i-m60lx3hh soft]# chown mysql.mysql /soft/mysql/             # 更改目录属主

//初始化数据库
[root@i-m60lx3hh soft]# /soft/mysql/bin/mysqld --initialize \
> --user=mysql --basedir=/soft/mysql \
> --datadir=/soft/mysql/data/

// 初始化数据库会告诉默认登录账户与密码
[root@i-m60lx3hh soft]#  egrep 'temporary password is generated' /var/log/mysqld.log

//使用ssl链接,初始化后重新授权目录权限
[root@i-m60lx3hh src]# /soft/mysql/bin/mysql_ssl_rsa_setup \
> --datadir=/soft/mysql/data/
[root@i-m60lx3hh src]#  chown -R mysql.mysql /soft/mysql/


//建立mysql配置文件
[root@i-m60lx3hh src]# cp /etc/my.cnf /etc/my.cnf_bak
[root@i-m60lx3hh src]# vim /etc/my.cnf
[mysqld]
basedir=/soft/mysql
datadir=/soft/mysql/data
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
socket=/tmp/mysql.sock

#  启动mysql
//方式一,使用mysqld_safe
[root@i-m60lx3hh src]# /soft/mysql/bin/mysqld_safe --user=mysql &

//方式二,使用(systemV)方式管理,推荐
[root@i-m60lx3hh src]# cp /soft/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@i-m60lx3hh src]# chkconfig --add mysqld
[root@i-m60lx3hh src]# chkconfig mysqld on

// 修改安装目录与数据存放目录
[root@i-m60lx3hh src]# sed -i '/^basedir=/cbasedir=\/soft\/mysql' /etc/init.d/mysqld 
[root@i-m60lx3hh src]# sed -i '/^datadir=/cdatadir=\/soft\/mysql\/data' /etc/init.d/mysqld 

//启动数据库
[root@i-m60lx3hh src]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!

//检查进程
[root@i-m60lx3hh src]# ps aux |grep mysql

//检查端口netstat ss
[root@i-m60lx3hh src]# lsof -i :3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  6121 mysql   20u  IPv6  40564      0t0  TCP *:mysql (LISTEN)

[root@i-m60lx3hh src]# ss -lntup |grep 3306
tcp    LISTEN     0      80     [::]:3306               [::]:*                   users:(("mysqld",pid=6121,fd=20))

# 连接数据库测试

//默认没有mysql命令
[root@i-m60lx3hh src]# mysql
-bash: mysql: command not found

//可以选择添加路径至PATH中,或者直接使用绝对路径
[root@i-m60lx3hh src]# echo "export PATH=$PATH:/soft/mysql/bin" >> /etc/profile
[root@i-m60lx3hh src]# source /etc/profile

//登录数据库
[root@i-m60lx3hh src]# mysql -uroot -p'ktrPl*z?S8D_' -h 127.0.0.1

//系统默认配置数据库密码必须修改,否则无法使用数据库
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

//修改系统默认密码
mysql> alter user root@'localhost' identified by 'Wazx@123';

//再次重新登录使用数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

//如果重新初始化会导致数据全部丢失
[root@sql ~]# yum install -y psmisc
[root@sql ~]# killall mysqld
[root@sql ~]# rm -rf /soft/mysql/data/*
[root@sql ~]# /soft/mysql/bin/mysqld --initialize --user=mysql \
--basedir=/soft/mysql --datadir=/soft/mysql/data
#可不执⾏
[root@sql ~]# /soft/mysql/bin/mysql_ssl_rsa_setup --datadir=/soft/mysql/data

# 变更数据库密码
//第⼀种⽅式, 需要知道密码
[root@sql ~]# mysqladmin -uroot -p'Wing@123' password 'Wazx@123'

//第⼆种⽅式, 登录MySQL, 修改相应表
mysql> update mysql.user set authentication_string=password('Wazx@123') where
user='root';
mysql> flush privileges;

//忘记 mysql root 密码
[root@sql ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables # 新增跳过授权表

//重启数据库⽣效
[root@sql ~]# systemctl restart mysqld
#登陆就不需要填写任何账号密码
[root@sql ~]# mysql

//查看表字段
mysql> select user,host,authentication_string from mysql.user;

//如何根据authentication_string上⾯的加密密码,破解推理出来明⽂密码
https://www.cmd5.com/hash.aspx?s=123456

//5.7.6版本后更新密码⽅式
mysql> update mysql.user set authentication_string=password('Wing@123') where
user='root';
mysql> exit

//5.7.6版本前更新密码⽅式
mysql> update mysql.user set password=password('Wing@123') where user="root" and
host="localhost";
[root@sql ~]# vim /etc/my.cnf
[mysqld]
#skip-grant-tables #注释
//重启数据库⽣效
[root@sql ~]# systemctl restart mysqld
//使⽤新密码登录数据库
[root@sql ~]# mysql -uroot -p'Wing@123'
mysql>












posted @ 2025-03-11 16:00  basickill  阅读(12)  评论(0)    收藏  举报