关系型数据库管理系统,使用标准sql,支持多种语言
下面是一些安装方式
\1. https://www.cnblogs.com/micfox/articles/10989905.html
\2. https://blog.csdn.net/MissDreamY/article/details/104938194
\3. 如果上面和下面的安装都失败的是话,试试这个https://www.jianshu.com/p/276d59cbc529
yum list installed | grep mysql
mysql-libs.x86_64 5.1.73-5.el6_6 @anaconda-CentOS-201508042137.x86_64/6.7
yum -y remove mysql-libs.x86_64
wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
rpm -ivh mysql-community-release-el6-5.noarch.rpm
yum repolist all | grep mysql
通过命令行下载太慢了,自己在官网上下载了一个,存在了 d:/迅雷下载。
安装 mysql-community-server 版本(好像默认自带 mysql-community-client)
yum install mysql-community-server -y
service mysqld start
service mysqld stop
service mysql status
打下面这一套组合拳
rm -fr /var/lib/mysql/*
rm /var/lock/subsys/mysqld
killall mysqld
然后启动 mysql 的服务
service mysqld start
查看 mysql 用户
cat /etc/passwd|grep mysql
查看 mysql 用户组
cat /etc/group|grep mysql
是什么:他是mysql的一个管理器,可以创建、删除数据库,改变数据库的密码等等,有很多功能
怎么使用,如果在linux直接使用mysqladmin或者其他任何命令,linux一般都是去 /usr/bin里去找。有点类似于环境变量。但是如果 /usr/bin里面没有的时候,肯定就找不到啊
所以,在 /usr/bin里建立 mysqladmin的软连接
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin
/usr/local/mysql/bin是自己设置的mysql的安装目录。
然后就可以用mysqladmin了。
首先确保mysql服务是开着的。
首次设置密码,mysql刚安装好的时候,不需要密码,直接mysql就能进入mysql系统。此时增加密码
mysqladmin -uroot -p root
就可以了
如果已经有密码,用下面的命令
./mysqladmin -uroot -p password
设置 mysql 为开机自启动
chkconfig mysqld on
查看是否设置成功:2、3、4都是on代表开机自动启动
chkconfig --list | grep mysqld
ntsysv
输入以上命令,如果mysqld里有星号就代表可以了
如果想找到msql的安装目录,就用下面的命令
ps -ef|grep mysql
basedir = path | 安装目录 |
---|---|
character-sets-dir = path | 给出存放着字符集的目录。 |
datadir = path | 数据库的数据库。就是各种数据库所在的位置。 |
pid-file = filename | 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); Init-V脚本需要使用这个文件里的进程ID结束mysqld进程。 |
socket = filename | 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(仅适用于UNIX/Linux系统; 默认设置一般是/var/lib/mysql/mysql.sock文件)。在Windows环境下,如果MySQL客户与服务器是通过命名管道进行通信 的,–sock选项给出的将是该命名管道的名字(默认设置是MySQL)。 |
lower_case_table_name = 1/0 | 新目录和数据表的名字是否只允许使用小写字母; 这个选项在Windows环境下的默认设置是1(只允许使用小写字母)。 |
mysql配置文件默认在/etc下,是my.cnf
修改配置文件位置
将其拷贝至 /etc 目录下,重命名为 my.cnf ,覆盖原有的配置文件
cp /usr/share/mysql/my-default.cnf /etc/my.cnf
查看 mysql 编码字符集
show variables like '%char%';
# 或者
show variables like '%character%';
vim /etc/my.cnf
[client]
default-character-set=utf8[mysqld]
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci[mysql]
default-character-set=utf8
好像比老师的配置文件少了很多内容???
create database db01;
create table user(id int not null, name varchar(20));
insert into user values(1,'张三1');
select * from user;
show variables like '%char%';
mysql 的安装位置
**
**
**
**
**
**
find / -name mysql -ls # /是从/开始找, -name mysql是文件名中包含mysql, -ls是显示详细信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AWyZ94as-1616028958991)(https://cdn.nlark.com/yuque/0/2021/png/2840444/1615967369962-9c6041ff-a405-454a-bfc4-b2fa5317a7df.png)]
mysql> create database db01
mysql> show databases
use db01;
show tables;
create table user(id int not null, name varchar(20));
insert into user values(1,'zs');
创建名称为 zhang3 的用户, 密码设为 123123;
create user zhang3 identified by '123123';
查看用和权限的相关信息的 SQL 指令
select host, user, password, select_priv, insert_priv,drop_priv from mysql.user;
1.host :表示连接类型
mysql -u xxx -p 123xxx
方式的连接。user:表示用户名
mysql> select host, user, password, select_priv, insert_priv,drop_priv from mysql.user;
+-----------+------+-------------------------------------------+-------------+-------------+-----------+
| host | user | password | select_priv | insert_priv | drop_priv |
+-----------+------+-------------------------------------------+-------------+-------------+-----------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | Y | Y | Y |
| heygo | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | Y | Y | Y |
| 127.0.0.1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | Y | Y | Y |
| ::1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | Y | Y | Y |
+-----------+------+-------------------------------------------+-------------+-------------+-----------+
4 rows in set (0.04 sec)
set password =password('123456');
修改李四用户的密码
update mysql.user set password=password('123456') where user='li4';
注意:所有通过 user 表的修改, 必须 用 flush privileges;
命令才能生 效
将王五的用户名修改为李四
update mysql.user set user='li4' where user='wang5';
注意:所有通过 user 表的修改, 必须 用 flush privileges;
命令才能生 效
删除李四用户
drop user li4
注意:不要通过 delete from user u where user='li4'
进行删除, 系 统会有残留信息保留。
该权限如果发现没有该用户, 则会直接新建一个用户。
grant 权限 1,权限 2,…权限 n on 数据库名称.表名称 to 用户名@用户地址 identified by '连接口令'
示例:给 li4 用户用本地命令行方式下, 授予 atguigudb 这个库下的所有 表的插删改查的权限。
grant select,insert,delete,drop on atguigudb.* to li4@localhost ;
授予通过网络方式登录的的 joe 用户,对所有库所有表的全部权 限, 密码设为 123
grant all privileges on *.* to joe@'%' identified by '123';
查看当前用户权限:
show grants;
收回权限命令
revoke [权限 1,权限 2,…权限 n] on 库名.表名 from 用户名@用户地址;
收回全库全表的所有权限
REVOKE ALL PRIVILEGES ON mysql.* FROM joe@localhost;
收回 mysql 库下的所有表的插删改查 权限
REVOKE select,insert,update,delete ON mysql.* FROM joe@localhost;
注意:权限收回后, 必须用户重新登录后, 才能生效。
show grants;
select * from user ;
二进制日志文件 log-bin :用于主重复制
默认是关闭的,记录严重的警告和错误信息,每次启动和关闭的详细信息等
默认关闭,记录查询的sql语句,如果开启会减低mysql的整体性能,因为记录日志也是需要消耗系统资源的
最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作。如果是select语句,服务器还会查询内部的缓存。如果缓存空间足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。
Management Serveices & Utilities | 系统管理和控制工具 |
---|---|
SQL Interface | SQL 接口。 接受用户的 SQL 命令, 并且返回用户需要查询的结果。 比如 select from 就是调用 SQL Interface |
Parser | 解析器。 SQL 命令传递到解析器的时候会被解析器验证和解析 |
Optimizer | 查询优化器。 SQL 语句在查询之前会使用查询优化器对查询进行优化, 比如有 where 条件时, 优化器来决定先投影还是先过滤。 |
Cache 和 Buffer | 查询缓存。 如果查询缓存有命中的查询结果, 查询语句就可以直接去查询缓存中取 数据。 这个缓存机制是由一系列小缓存组成的。 比如表缓存, 记录缓存, key 缓存, 权限缓存等 |
是啥?比如车子,有的车子可以跑沙漠,有的跑山地,还有的跑雪地。
引擎层就相当于给mysql这部车子配备了多个发动机。当mysql跑雪地的时候,装上雪地发动机。跑沙漠的时候,装上沙漠发动机等等。
存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过APl与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。后面介绍MyISAM和InnoDB
数据存储层,主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互。
show engines;
show variables like '%storage_engine%';
是否支持外键、事务、行锁还是表锁。 MyISAM更关注性能,偏重于读。 而InnoDB全面。