【mysql】软件安装及优化~
1、 数据库简介
1.1 DBMS 数据库管理系统
Database
:数据库,简称DB。是数据的汇集,结构是库中有表,表中有数据。DBMS
:是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心DBA
:数据库管理员 database admin。负责数据库的规划、设计、协调、维护和管理等工作
小拓展1:
- 操作系统的核心:内核
- 数据库的核心:存储引擎 DBMS
小拓展2:什么是持久化?
持久化就是把数据永久保存。怎么永久保存?就是将数据存储在硬盘上。
1.2 数据库系统的架构
- 单机架构
- 大型主机/终端架构
- 主从式架构(C/S)⭐
- 分布式架构
1.3 数据库类型
- 关系型数据库⭐:Relational Database Management System,最初由 IBM公司开发
- 非关系型数据库:非关系型不仅仅是关系型,也就是非关系型包含关系型。
- 键值对型数据库
1.4 关系型数据库 相关概念
- 关系:关系就是二维表,其中:表中的行、列次序并不重要
- 行row:表中的每一行,又称为一条记录record
- 列column:表中的每一列,称为属性,字段,域field
- 主键Primary key:PK , 用于唯一确定一个记录的字段,一张表只有一个主键
- 域domain:属性的取值范围,如 性别只能是'男'和'女'两个值
1.5 mysql 与 mariadb
MariaDB和MySQL都是流行的关系型数据库管理系统(RDBMS)。它们是开源软件,MariaDB是MySQL的分支,是由MySQL的创始人之一创立的。
版本演变
MySQL:5.1 --> 5.5 --> 5.6 --> 5.7 --> 8.0
MariaDB:5.1 -->5.5 -->10.0--> 10.1 --> 10.2 --> 10.3 --> 10.4 --> 10.5
2、数据库安装
工具名 | 类型 | 说明 |
---|---|---|
mysql | 客户端工具 | 用来连接数据库,命令结尾不需加分号; |
mysqld | 服务端工具 | 要加分号;结束符 |
客户端工具不能补全
配置文件路径:/etc/my.cnf
2.1 yum安装
2.1.1 mariadb
yum安装的没有密码,不安全。
yum info mariadb //列出MariaDB软件包的这些信息,帮助了解该软件包的当前状态和配置。
[root@localhost ~]# yum install mariadb-server -y
[root@localhost ~]# systemctl start mariadb.service
[root@localhost ~]# mysql
[root@localhost ~]# mysql_secure_installation //安全配置脚本,会跳出来一些初始化设置 先输入密码 一路回车
2.1.2 mysql
***********官方源和清华源二选一,推荐官方源**********
官方源:
[root@centos7 ~]# tee /etc/yum.repos.d/mysql.repo <<EOF
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOF
清华源:
[root@centos7 ~]# tee /etc/yum.repos.d/mysql.repo <<EOF
[mysql]
name=mysql5.7
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0
EOF
[root@centos7 ~]# yum -y install mysql-community-server //社区版
[root@localhost yum.repos.d]# systemctl start mysqld
[root@localhost yum.repos.d]# ss -ntap |grep 3306
[root@centos7 ~]# grep password /var/log/mysqld.log //查看密码
[root@localhost yum.repos.d]# mysql -u root -p'+8saq%5+ljzG' //特殊符号用单引号引起来,注意密码必须要引起来
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
//修改密码策略
mysql> alter user root@'localhost' identified by 'abc123';
mysql -uroot -pabc123 //按照新密码重新登录
mysql> \h
//查看帮助
2.2 编译
编译和yum不能同时安装在同一台设备上。
[root@localhost ~]# yum install -y ncurses-devel autoconf cmake //安装cmake等依赖环境
useradd -s /sbin/nologin mysql
cd /data
###上传mysql-boost-5.7.20.tar.gz到data目录下###
tar xf mysql-boost-5.7.20.tar.gz
cd /data/mysql-5.7.20/
###########下面这部分一起复制,复制完再点回车!#########
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
make -j6 //这步特别特别慢! j6注意修改虚拟机的设置
make install //这步快
chown -R mysql:mysql /usr/local/mysql/
vi /etc/my.cnf //原始里面的删掉,粘贴下面的
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES //调优
chown mysql:mysql /etc/my.cnf -R
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile
cd /usr/local/mysql/ //下面的脚本不能以绝对路径执行,必须是相对路径,所以要cd切换
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
netstat -anpt | grep 3306
mysqladmin -u root -p password "abc123" //⭐一定要直接回车!!!输入密码就会破解密码,那样只能重装!!!
mysql -u root -p //这个命令敲下,提示要输入密码,这个就是刚才设置的密码abc123
2.3 二级制安装⭐
生产环境中,一般多用二进制安装。
- 准备用户
groupadd -r -g 306 mysql
useradd -r -g 306 -u 306 -d /data/mysql mysql
- 准备数据目录,建议使用逻辑卷
#可选做,后面的脚本mysql_install_db可自动生成此目录
mkdir /data/mysql -p
chown -R mysql:mysql /data/mysql
- 准备二进制程序
tar xf mysql-VERSION-linux-x86_64.tar.gz -C /usr/local
cd /usr/local
ln -sv mysql-VERSION mysql
chown -R root:root /usr/local/mysql/
- 准备配置文件
cd /usr/local/mysql //主程序目录
cp -b support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf
#mysql语句块中添加以下三个选项
[mysqld]
datadir = /data/mysql
innodb_file_per_table = on #在mariadb5.5以上版的是默认值,可不加
skip_name_resolve = on #禁止主机名解析,建议使用 可选项
- 创建数据库文件
cd /usr/local/mysql/
./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
mysqld --initialize-insecure --user=mysq1 --datadir=/data/mysql //生成空密码,如果去掉-insecure,就是生成随机密码
ll /data/mysql/
- 准备服务脚本,并启动服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
#如果有对应的service 文件可以执行下面
cp /usr/local/mysql/support-files/systemd/mariadb.service
/usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable --now mariadb
- PATH路径
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
- 安全初始化
/usr/local/mysql/bin/mysql_secure_installation
2.4 mycli 插件⭐
mycli是基于python开发的,pip37是python的安装工具,类似于yum。
cd /opt
[root@localhost opt]#yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
**********加载Python-3.7.7_.tgz**********
[root@localhost opt]#tar zxvf Python-3.7.7_.tgz
[root@localhost Python-3.7.7]#cd Python-3.7.7/
[root@localhost Python-3.7.7]#./configure --prefix=/usr/local/Python-3.7.7/
[root@localhost Python-3.7.7]#make
[root@localhost Python-3.7.7]#make install
[root@localhost Python-3.7.7]#ln -s /usr/local/Python-3.7.7/bin/python3.7 /usr/bin/python37
[root@localhost Python-3.7.7]#ln -s /usr/local/Python-3.7.7/bin/pip3.7 /usr/bin/pip37
[root@localhost Python-3.7.7]#pip37 install --upgrade pip -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
[root@localhost Python-3.7.7]#pip37 install mycli -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
[root@localhost Python-3.7.7]#ln -s /usr/local/Python-3.7.7/bin/mycli /usr/bin/mycli
[root@localhost Python-3.7.7]#mycli -u root -p 123123
[root@localhost ~]#vim /etc/my.cnf
[mysql]
prompt=(\u@\h) [\d]>\_
auto-rehash
图形化界面:
[mysqld]
skip_grant_tables
小拓展:rpm包的依赖关系
yum remove mysq1-libs //卸载 mariadb的安装联系
rpm -ivh mysql-community-client-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-common-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm
3、 数据库优化(客户端)
3.1 修改提示符
[root@localhost ~]# vim /etc/my.cnf
[mysql] //加在客户端
prompt=(\u@\h) [\d]>\_
[mysqld] //如果在d下面,就是加在服务端
systemctl restart mysqld
[root@7-2 ~]# mysql -uroot -pabc123
(root@localhost) [(none)]> use mysql; //切换到mysql数据库
(root@localhost) [mysql]> //通过前面的提示符,可以看到当前的位置
3.2 自动补全
mariadb默认补全,mysql不默认补全
[root@localhost ~]# vim /etc/my.cnf
[mysql]
prompt=(mysql) [\d]>\_
auto-rehash
//不是完全生效,有时只能补全敲过的命令。
转载自:https://juejin.cn/post/7385832570183352358