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>

浙公网安备 33010602011771号