1.mariadb和原来的MySQL如出一辙,凡是可以用MySQL的地方都可以使用mariadb
2.安装mariadb yum list mariadb* 先搜索一下跟mariadb相关的安装包
yun -y install mariadb-server 服务端
yun -y install server 客户端
学习时可以同时安装在同一台机器上
3.防火墙开放mariadb
firewall-cmd --add-service=mysql 并设置开机自启
服务端口:3306
4.主配置文件 /etc/my.cnf 在【mysqld】下添加一下内容:
character-set-server=utf8 意思是修改编码为utf8 (在中国一般使用的是utf8),如果你使用其他的编码就会出现乱码,比如:你会输入汉字它会出现问好,在数据库里如果已经出现乱码,你再改变编码也还是乱码,这可能是暂时的你知道就行)
5.登录数据库 mysql(可以什么都不加)
如果登录以后输入错误的命令并执行了,可以通过\c,不要按ctrl+c那样会直接退出数据库,在命令行凡是以#号和横杠开始的都是注释,命令结束符是分号;或者\g 如果不加会一直等
6.status;显示状态
7.select user(); 查看哪个用户登录
8.select database(); 查看当前在哪个数据库里面,如果是null那就不在任何数据库。
9.什么是数据库,你可以把它理解为文件夹,文件夹里面有很多电子文档(比如excel表),注意库里面不能再嵌套库。
10.show databases; 查看有多少库 这些库存放在/var/lib/mysql中,这是my.cnf文件定义好的,建议大家再启用mysql之前,把逻辑卷挂载到/var/lib/mysql下面
11.create database blog; 创建数据库blog
12.删除数据库 drop database blog;
13.在mysql中是不能使用tab键补全命令的
14.show create database blog; 查看库的属性,属性里面有它的编码。
15.alter database blog character set gbk; 修改编码为gbk
16.use blog;进入库blog中,你再其他库中也可以使用use直接切换到库blog中。
17.show tables; 查看当前库有多少个表
18.定义表的语法:
create table 表名(
列1 数据类型,
列2 数据类型,
列3 数据类型,
....................
);
19.创建表 create table aa(
id int,) // 定义第一列的名字为id,取值范围是整数
name varchar() // 第二列为name,取值为字符串类型,一个字母或者数字是一个字节,一个汉字是3个字节,括号中如果是10意思就是取值最多是10个字节。
20.ctrl -l 清屏,在linux中可以用的快捷键在mysql中也可以使用
21.describe aa; 查看表的结构或简写成desc aa;
22.alter table aa add city varchar(10); 增加aa表中内容,就是添加一列
23.alter table aa drop city;删除aa表中city列
24.alter table aa add city varchar(10) first; first的意思是放在第一列,如果换成after id 就是放在id列的后面
25.alter table aa modify name varchar(20);修改name列的属性,其中修改了值的最大字节数
26.alter table aa change name name varchar(10); 属性修改也可以这样
27.show create table aa; 查看表aa的属性,里面包含编码的设置值
28.alter table aa chaset gbk; 修改表aa的编码为gbk
29.alter table aa change name name1 varchar(10);修改name列的名字为name1
30.rename table aa to bb; 修改表名,由表aa重名为bb
31.drop table; 删除表aa
32.create table aa as select from mysql.user; 复制库mysql中user表并重名为aa表。
33.简单的select查询 select 列1,列2...... from 表;举例说明:
select host,user,password from aa; 查看表aa中host列,user列和password列的值。如果查看表中所有的值,用号表示
34.select host,user,password from aa where user='root' 增加了一个条件就是user=‘root’的值
35.mysql中是可以使用正则和通配符的,在mysql中的通配符有两个:
-
下划线,表示任意一个字符
% 百分号,表示任意多个字符
如果使用通配符的话就不要使用=了,而要用like,例如:
select host,user,password from aa where user like 'tom_';
tom tom后面有两个字符
tom\ tom_后面有一个字符的,下划线是转义
36.mysql优化最重要的就是做索引,其次优化配置文件
37.show variables like ''chara%se%se%'; 查看配置文件中含有横线部分的参数,这里面用了通配符%
38.在命令行获取的参数写入到配置文件里的时候,要把下划线变成-横杠
39.mysql也可以使用正则 ,举例说明:
select host,user,password from aa where user regexp 'tom.; 注意后面有一个点
40.往表中插入数据:
insert into 表名(列1,列2....) values(值1,值2.....);这里各个值必须要和前面的列要对应起来。
除了列名,数字,变量之外,其他的都是要用单引号引起来,不加会报错
41.select * from aa where name is null; 条件是name为null(空)的内容。
42.insert into aa value(4,'mary');往所有列插入值。mariadb的用户管理
1.desc mysql.user; mysql用户信息存放地
2.mysql的root用户跟系统的root用户是没有关系的,默认mysql刚安装好时时没有root密码的
3.三种给mysql用户设置密码的方式
一mysqladmin 操作系统层的命令
mysqladmin -uroot -p当前密码 password '新密码' 如果没有密码 -p不用写
二 set mysql上面的命令
三 update mysql上面的命令
举例:mysqladmin -uroot password 'redhat'
mysqladmin -uroot -p password 'redhat'
mysqladmin -uroot -predhat password('redhat')
set password for 指定的用户=password('redhat')
set password for root@'localhost'=password('redhat') 其中password('redhat')之所以加括号是因为mysql不支持明文密码,你加了括号意思是代表加密密码
set password=password('redhat123'); 如果不包括用户就是当前用户
update mysql.user set password=password('redhat456') where user='root' and host='localhost'; //注意用update修改密码的时候,直接修改的是硬盘里的内容,你现在直接登录mysql时会登录不上去,需要刷新一下缓存,命令如下:flush privileges;
4.mysql的root密码忘记了怎么办,首先编辑/etc/my.cnf 在【mysqld】下面添加skip-grant-tables,重启服务mariadb 这时再登录mysql就会进入安全模式,只能用update命令修改密码,不能用set,修改完以后记得注释掉添加的设置项,然后再刷新一下缓存即可。
5.当一个命令杀不死,你可以再开一个终端杀死那个进程,如:
killall -9 进程
-
user host password
root localhost ............br/>host指的是前面的user允许在哪个机器上登录mysql,如果你希望所有的机器上登录的话,则host可以设置成%,所以user@host这样的一个组合我们认为是一个用户
7.show grants for tom\G 查看tom的权限
8.drop user tom;删除用户user
9.grant p1,p2,p3....... on 库.表 to 用户@ip indentified by '密码';
all .
all privileges
意思是授权这个用户对库中的表拥有p1,p2,p3....等权限 ,如果是拥有所有的权限用all或all privilege是 所有库和所有表用
举例:grant select,insert on blog. to tom@'192.168.26.1'; //意思是授权tom用户通过192.168.26.1这台机器来登录我,授权的权限是select,insert即查询,插入
10.Navicat for mysql 一个windows系统上面针对mysql的客户端图形化工具,功能很强大。
11.revoke insert on blog. from tom@'192.168.26.1'; 取消tom用户对库blog中的表的插入权限
12.grant all privileges on .* to root@'%' indentified by 'redhat'; 这样就可以让root用户远程登录了,root权限大
备份与恢复
1.冷备份 ----脱机备份
必须要关闭数据库,然后需要把数据库目录/var/lib/mysql 里所有的东西全部拷贝,最方便的就是在该目录下挂载一个lv,利用逻辑卷的快照恢复功能。
2.热备份 ---联机备份
备份数据的时候,不需要关闭数据库,可以在线备份恢复不影响用户正常使用,网上mysql备用工具还是挺多的,比如:Xtrabackup 系统也有一个备用命令mysqldump
3.mysqldump
可以备份一张表
mysqldump -uroot -predhat 库名.表名
备份多张表
mysqldump -uroot -predhat 库名.表名1 表名2 表名3....
备份所有的表
mysqldump -uroot -predhat 库名 //不包括库本身,只是里面的内容
备份整个库
mysqldump -uroot -predhat -B 库名 //这样把表和库都备份起来了
举例说明:mysqldump -uroot -predhat blog aa > /backup/a.sql
备份的时候并非备份的是具体的数据,备份的是创建表的命令,往表里插入数据的命令,修改数据,删除数据的命令,如果你误删除某张表,就按照以前执行过的命令,重新执行一次,那么表就恢复出来了。
4.恢复数据,比如恢复数据库中的表,要先进入该库才能恢复,例如:
use blog;
source /backup/a.sql;
show tables;
5.在操作系统命令里也是可以执行sql语句的,比如:
mysql -uroot -predhat -e 'use blog;show tables; //查看blog库中表
mysql -uroot -predhat -e 'use blog;drop tables aa;show tables;'删除表aa
mysql -uroot -predhat -e 'use blog;source /backup/a.sql;' //恢复数据
备份多张表
mysql -uroot -predhat blog aa bb > /backup/ab.sql
备份所有表
mysqldump -uroot -predhat blog >/backup/all.sql //写一个库名就行了
备份一个库,恢复的时候就不必进入库里了
mysqldumo -uroot -predhat -B blog > /backup/db.sql;
mysql -uroot -predhat -e 'drop database blog;show databases;' //删除blog库
source /backup/sql; //不需要进入库
mysql -uroot -predhat -e 'use blog;show tables;' //进blog库并查看表6.开源工具 Navicat 这个工具有甲骨文版,sql版的,mysql版的,收费的
phpmyadmin 也是图形化的工具 ,而且是免费的