1_MYSQL_安装介绍-环境部署-连接-脚本执行方式-存储引擎

本文探讨了MySQL容器化的利弊,包括数据安全风险、性能影响和资源隔离问题,并详述了安装、配置、卸载和升级流程,以及如何在Windows/Linux环境下管理和授权。重点介绍了四种存储引擎的选择与应用。
摘要由CSDN通过智能技术生成

MYSQL是否适合容器化

不适合。
1、数据安全,容器删除数据也被删除。
2、性能不好。
3、资源隔离问题 
   在一台机器上用容器启动mysql,还可以启别的容器。别的容器是可以访问mysql所在容器的资源。
4、docker的无状态属性

虚拟化(容器)的目的是减少资源消耗,节约成本。

The world’s most popular open source database
MYSQL官网
mysql已经被oracle收购。
商业版是收费的,社区版开源免费。

1、数据库类型

关系型数据库:
    MYSQL、Oracle、SQL server、MSSQL、postgreSQL、DB2、informix
非关系型数据库:
    redis、mongodb、TIDB、TSDB

关系型:表的字段之间、表之间有关系
非关系型:键值

国产数据库:TIDB、人大金仓、达梦、oceanbase(阿里)
国外数据库:MYSQL、Oracle、INFOMIX、DB2

2、安装

版本:5.7.34   二进制安装  
  商业版:收费
  社区版:免费
  5.7比较老(比较成熟、稳定)、5.8比较新
# 8.0.x版本
# 5.7.x版本 推荐使用,稳定

2.1 cemtos镜像下载

在这里插入图片描述在这里插入图片描述

2.2 下载Mysql

官网下载 https://dev.mysql.com/downloads/mysql/
在这里插入图片描述
下载的是rpm包(.tar包里面有很多rpm结尾的文件),相当于windows里面的exe。
在这里插入图片描述下载的是二进制安装包。

2.3 安装方式

rpm安装——专卖店买衣服

上传安装包到linux,解压,用yum命令安装,速度快。
解压安装,已经编译好了的。安装快,但是不能修改很多东西。

编译安装——裁缝店做衣服

速度慢,所有代码都需要编译。
但是可以修改很多东西,个性化定制,开启很多功能,指定安装路径

二进制安装

mysql是c语言开发的,要编译成二进制程序才能运行。
可以通过修改配置文件来定制功能,安装速度快(结合了rpm和编译安装的优点)

2.4 安装步骤

官方安装文档—— https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html

1)上传解压压缩包

[root@master install_mysql]# tar xf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
[root@master install_mysql]# ls
mysql-5.7.33-linux-glibc2.12-x86_64  mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
[root@master install_mysql]# cd mysql-5.7.33-linux-glibc2.12-x86_64
[root@master mysql-5.7.33-linux-glibc2.12-x86_64]# ls
bin  docs  include  lib  LICENSE  man  README  share  support-files

在这里插入图片描述2)将解压后的文件夹移动到/usr/local下,改名为mysql

[root@master install_mysql]# mv mysql-5.7.33-linux-glibc2.12-x86_64 /usr/local/mysql

3)新建mysql用户和组,禁止登陆

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

4)关闭防火墙、selinnux,设置开机不启动

 service firewalld stop
 systemctl disable firewalld
 setenforce 0
 sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config 

5) 新建数据目录,修改权限

[root@master mysql]# mkdir /data/mysql -p
[root@master mysql]# chown mysql:mysql /data/mysql
[root@master mysql]# chown 750 /data/mysql

6)初始化mysql,让mysql支持ssl方式登陆 。设置环境变量

cd /usr/local/mysql/bin
./mysqld  --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql 
# 记住初始化是的登录密码
2022-04-13T19:13:48.559146Z 1 [Note] A temporary password is generated for root@localhost: *+sp.6xWt8?m
[root@master bin]# ./mysql_ssl_rsa_setup --datadir=/data/mysql
[root@master bin]# PATH=/usr/local/mysql/bin:$PATH # 临时修改环境变量
[root@master bin]# echo 'PATH=/usr/local/mysql/bin:$PATH' >>/root/.bashrc # 永久修改环境变量
[root@master bin]# export PATH=/usr/local/mysql/bin:$PATH #输出为全局变量,子进程也可以使用

7) 复制support-files里的mysql.server文件到/etc/init.d/目录下叫mysqld
修改/etc/init.d/mysqld脚本文件里的datadir目录的值

[root@master support-files]# cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
[root@master support-files]# vim  /etc/init.d/mysqld  # 手动改
 66   basedir=/usr/local/mysql
 67   bindir=/usr/local/mysql/bin
 68   if test -z "$datadir"
 69   then
 70     datadir=/data/mysql
[root@master support-files]# sed -i '70c datadir=/data/mysql' /etc/init.d/mysqld  # 用命令改

8) 生成/etc/my.cnf配置文件,告诉mysql进程怎么运行

cat  >/etc/my.cnf  <<EOF
[mysqld_safe]

[client]
socket=/data/mysql/mysql.sock

[mysqld]
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 512M
character-set-server=utf8

[mysql]
auto-rehash
prompt=\\u@\\d \\R:\\m  mysql>
EOF

9)启动mysql,设置开机自启

[root@master ~]# service mysqld start
[root@master ~]# chkconfig --add mysqld  #设置开机自启
[root@master ~]# systemctl enable mysqld #  /sbin/chkconfig mysqld on真正设置开机自启的命令
mysqld.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysqld on

10)登录mysql,修改密码

[root@master ~]# mysql -uroot -p'*+sp.6xWt8?m'
...
root@(none) 03:44  mysql>set password='Sanchuang123#';

# 临时密码tem_passwd之前要定义好
mysql -uroot -p$tem_passwd --connect-expired-password   -e  "set password='Sanchuang123#';"

3、卸载和升级

卸载脚本

[root@MYSQL ~]# cat uninstall_mysql.sh
#!/bin/bash
# 停止mysqld服务
service mysqld stop
# 删除mysql用户
userdel -r mysql
# 删除数据目录和base目录
rm -rf /usr/local/mysql
rm -rf /data/
rm -rf /etc/init.d/mysqld

升级脚本

目前的办法:卸载后重新安装一遍,使用型的版本
后期深入了解后补充。

5、授权登录

MariaDB [(none)]> create user 'sc'@'%' identified by 'sc123456';       
 # 创建用户 用户名@从哪里远程登录(localhost 表示只允许本机登录、% 所有主机)   通过密码sc123456登录
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> grant all on *.* to 'sc'@'%';
# 授予所有库.所有表的 所有权限给 sc用户  从任意主机登录过来 
Query OK, 0 rows affected (0.00 sec)

6、安装客户端工具

windows

安装Navicat,配置连接
在这里插入图片描述

linux

[root@MYSQL ~]# which mysql
/usr/bin/mysql
[root@MYSQL ~]# rpm -qf /usr/bin/mysql
mariadb-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
[root@MYSQL ~]# mysql -usc -p'123456' -h 192.168.169.143

设置其他主机可连接

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='root';
FLUSH PRIVILEGES;
grant all privileges on *.* to 'sc'@'%' identified by 'Sanchuang123#' with grant option
flush privileges;

创建用户并设置密码、可以从哪些主机登录

root@(none) 15:04  mysql>create user 'sc'@''  identified by 'Sanchuang123#';
Query OK, 0 rows affected (0.00 sec)
root@(none) 15:05  mysql>create user 'sc'@'192.168.169.%'  identified by 'Sanchuang123#';
Query OK, 0 rows affected (0.00 sec)

赋予所有权限(除了grant)给sc用户,在所有的库上操作所有的表(*.*);

root@mysql 15:11  mysql>grant all on *.* to 'sc'@'%';# 给sc用户赋权
Query OK, 0 rows affected (0.00 sec)
root@mysql 15:12  mysql>grant  select on sanchuang.* to 'tang'@'%' identified by '123456';   # 给tang用户赋予sanchuang库的查询权限
Query OK, 0 rows affected, 1 warning (0.00 sec)

root@mysql 15:16  mysql>show warnings; # 查看警告
+---------+------+------------------------------------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                                                            |
+---------+------+------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1287 | Using GRANT for creating new user is deprecated and will be removed in future release. Create new user with CREATE USER statement. |
+---------+------+------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

知道哪些用户登录了mysql

root@mysql 15:19  mysql>show processlist;
+----+------+-----------+-------+---------+------+----------+------------------+
| Id | User | Host      | db    | Command | Time | State    | Info             |
+----+------+-----------+-------+---------+------+----------+------------------+
|  8 | root | localhost | mysql | Query   |    0 | starting | show processlist |
+----+------+-----------+-------+---------+------+----------+------------------+
1 row in set (0.00 sec)

用户登录

[root@localhost ~]# mysql -usc -p'Sanchuang123#'

游标:在数据库里的一个缓存空间
db = pymysql.connect()
cursor = db.cursor()
cursor.execute()
data = cursor.fetchone()
data = cursor.fetchmany()
data = cursor.fetchall()

db.close()

事务:
一组操作组成一个事务;
事务有俩种结果: 成功或失败
建表建库是自动commit的,增删改是要手动commit的
commit:落盘,永久保存;
rollback:数据操作失败,回滚;

7、存储引擎

innodb 存储引擎的特点:
支持事务、支持行界别的锁;
支持外键;

root@(none) 11:42  mysql>show engines; # mysql默认的存储引擎:innodb
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

存储引擎是和表捆绑在一起的,表本质就是一个文件;
字符集是和库捆绑在一起的,库本质就是一个文件;

四种存储引擎

memory
csv
innodb
myisam

建表时指定存储引擎
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这个手刹不太灵儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值