目录
前言:学习B站阳哥视频的笔记
1.mysql简介
1.1什么是Mysql
- MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。
- Mysql 是开源的,可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 Mysql 系统。
- MySQL 使用标准的 SQL 数据语言形式。
- Mysql 可以允许于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、 Eiffel、Ruby 和 Tcl 等。
- MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支 持最大的表文件为 8TB
1.2.mysql高级
数据库内部结构和原理
数据库建模优化
数据库索引建立
SQL 语句优化
SQL 编程(自定义函数、存储过程、触发器、定时任务)
mysql 服务器的安装配置
数据库的性能监控分析与系统优化
各种参数常量设定
主从复制
分布式架构搭建、垂直切割和水平切割
数据迁移
容灾备份和恢复
shell 或 python 等脚本语言开发
对开源数据库进行二次开发
2.linux安装mysql
2.1.rpm安装
1、下载rpm文件:地址是https://dev.mysql.com/downloads/mysql/
2、下载四个文件:(选择对应的版本)按照顺序来
(mysql-community-common-5.7.30-1.el7.x86_64.rpm)
(mysql-community-libs-5.7.30-1.el7.x86_64.rpm)
(mysql-community-server-5.7.30-1.el7.x86_64.rpm)
(mysql-community-client-5.7.30-1.el7.x86_64.rpm)
3、执行命令安装
如果存在冲突或者缺少依赖:卸载: rpm -e --nodeps mysql-community-common-8.0.19-1.el7.x86_64
sudo rpm -ivh mysql-community-common-5.7.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-5.7.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-client-5.7.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-server-5.7.30-1.el7.x86_64.rpm
到这里默认就安装结束,同时已经启动mysql的服务
数据库目录:/var/lib/mysql/
命令配置:/usr/share/mysql (mysql.server命令及配置文件)
相关命令:/usr/bin (mysqladmin mysqldump等命令)
启动脚本:/etc/rc.d/init.d/ (启动脚本文件mysql的目录)
系统配置:/etc/my.conf
4、查看mysql运行状态,并重启
systemctl status mysqld
systemctl restart mysqld
5、重置密码
5.1:vim /etc/my.cnf
5.2:在最后加上: skip-grant-tables
5.3:重启mysql服务: systemctl restart mysqld
5.4: mysql -u root-p 不需要输入密码直接enter即可
5.5:设置root账号的密码:
设置密码:update mysql.user set authentication_string=password('123456') where user='root' ;
刷新:FLUSH PRIVILEGES;
5.6:退出mysql:将之前加入的跳过密码验证删掉
命令:vim /etc/my.cnf
把skip-grant-tables去掉
5.7: 重新登录数据库
执行命令出现不能操作情况:show databases;
修改密码即可:alter user 'root'@'localhost' identified by 'Root123.@';
5.8:外部不能连接问题
use mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Root123.@' WITH GRANT OPTION;
flush privileges;刷新
2.2.mysql配置文件
frm文件:存放表结构;
myd文件:存放表数据
myi文件:存放表索引
如何配置:
windows:my.ini文件:
linux: /etc/my.cnf
1、 二进制日志log-bin,主重复制
2、错误日志log-error,默认是关闭的,记录严重的警告和错误信息,每次启动和关闭的详细信息等.
3、查询日志log,默认关闭,记录查询的sql语句,如果开启会减低mysql的整体性能,因为记录日志也是需要消耗系统资源的
4、数据文件
windows: D:\ProgramFiles\MySQL\MySQLServer5.5\data目录下可以挑选很多库
linux: 看看当前系统中的全部库后再进去: 默认路径:/var/lib/mysql
3.mysql用户和权限管理
3.1.用户管理
-- 创建名称为 zhang3 的用户,密码设为 123123;--
create user zhang3 identified by '123123';
-- 查看用户和权限的相关信息--
select host,user,select_priv,insert_priv,drop_priv from mysql.user where user='zhang3';
select * from mysql.user where user='zhang3';
-- 所有通过user 表的修改,必须用flush privileges;命令才能生效
update mysql.user set authentication_string=password('123') where user='zhang3';
flush privileges;
-- 所有通过user 表的修改,必须用flush privileges;命令才能生效
update mysql.user set user='li4' where user='zhang3';
-- 不要通过delete fromuseruwhere user='li4' 进行删除,系统会有残留信息保留。
drop user li4
host :表示连接类型
% 表示所有远程通过 TCP 方式的连接
IP 地址 如 (192.168.1.2,127.0.0.1) 通过制定 ip 地址进行的 TCP 方式的连接机器名 通过制定 i 网络中的机器名进行的 TCP 方式的连接
::1 IPv6 的本地 ip 地址 等同于 IPv4 的 127.0.0.1
localhost 本地方式通过命令行方式的连接 ,比如 mysql -u xxx -p 123xxx 方式的连接。user:表示用户名
同一用户通过不同方式链接的权限是不一样的。
password:密码
所有密码串通过 password(明文字符串) 生成的密文字符串。加密算法为MYSQLSHA1 ,不可逆。mysql 5.7 的密码保存到 authentication_string 字段中不再使用 password 字段。select_priv , insert_priv 等
为该用户所拥有的权限。
3.2.权限管理
create database test default character set utf8mb4 collate utf8mb4_unicode_ci;
use litemall;
create user 'yg'@'%' identified by 'yg123456';
1.授予权限
grant all privileges on test.* to 'yg'@'%';
flush privileges;
2.收回权限
收回部分权限
REVOKE select,insert ON test.* FROM 'yg'@'%';
收回全库全表的所有权限
REVOKE ALL PRIVILEGES ON mysql.* FROM 'yg'@'%';
3.查看权限
show grants for yg