在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。

卸载

卸载 停用mysql进程,没有安装过直接跳过此步骤
netstat- antp
pkill -9 mysqld

image.png

rpm -qa|grep -i mysql
image.png

安装

MySQL 官网下载自己所需要的 MySQL 版本,官网地址:https://dev.mysql.com/downloads/repo/yum/,或者用wget命令下载:

  1. wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

注意:
wget没安装的话需要先安装wget:sudo yum install -y wget
最好做一下和校验:

md5sum mysql57-community-release-el7-11.noarch.rpm

安装MySQL软件包的源

sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm

开始安装MySQL

yum install mysql-community-server

或者这条命令:

sudo yum install mysql-server

启动MySQL服务

sudo systemctl start mysqld

查看MySQL运行状态

sudo systemctl status mysqld

如果看到以下内容说明安装并启动成功。

*
其他内容
  *
Active: active (running)
  *
其他内容
  *
Started MySQL Server.

这个命令也行,不过最后会自动转到另一个命令

service mysqld restart

实际执行效果:

[liudecai@a ~]$ service mysqld restart
Redirecting to /bin/systemctl restart  mysqld.service

到此MySQL算是安装成功。
安装后可以用以下命令查看mysql的临时密码:

sudo grep 'temporary password' /var/log/mysqld.log

配置MySQL

sudo mysql_secure_installation

输入临时密码后更新新密码

MYSQL中查看版本

select version();

命令

刷新权限

flsh privileges

启动关闭mysql服务

service mysqld restart
service mysqld stop

访问远端MYSQL(天坑,以后再说)

MYSQL增删改查

mysql> create database web;                                  //创建数据库web
Query OK, 1 row affected (0.00 sec)

mysql> show databases;                                            //查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
| web                |
+--------------------+






mysql> use web;                                                        //选择要使用的数据库

Database changed


mysql> create table a1 (id int ,name char(30));                            //创建 a1 表,并添加 id 和 name 字段以及类型

Query OK, 0 rows affected (0.00 sec)

mysql> describe a1;                                                                                    //#查看表结构(字段)

+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  | YES  |     | NULL    |       |
| name  | char(30) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)



下面是复杂一点的

mysql> create table a2 (
        id int unsigned not null auto_increment, #字段要求为正数、且自增长、主键
        name char(30) not null default '', #字符型长度 30 字节,默认值为空格 
        age int not null default 0, #字段默认值为 0 
        primary key (id)
       ); #设置 id 为主键






mysql> describe a2;                                                                                                                //#查看表结构(字段)
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | char(30)         | NO   |     |         |                |
| age   | int(11)          | NO   |     | 0       |                |
+-------+------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)


//下面是插入数据
//先选择web库
mysql> insert into a2 (id,name,age) values (1,'zhangsan',21); #指明插入字段和数据
mysql> select * from a2;
mysql> insert into a2 values (2,'lisi',20); #按顺序插入指定字段
mysql> insert into a2 values (3,'wangwu'); #未声明年龄
ERROR 1136 (21S01): Column count doesn t match value count at row 1

mysql> insert into a2 values (4,'zhao',19),(5,'sun',25); #插入多条数据



//将表 a2 的数据复制到表 a1
mysql> select * from a1;
mysql> insert into a1 (id,name) select id,name from a2;
#查询 a2 值,并写入到 a1
mysql> select * from a1;


//删除数据库
mysql> create database abc;
Query OK, 1 row affected (0.00 sec)

mysql> drop database abc;
mysql> show databases;




//删除数据表
mysql> drop table a1;
mysql> show table;



//删除表里的数据记录
mysql> delete from a2 where id=5; #删除 id=5 的记录
mysql> delete from a2 where between 23 and 25; #删除年龄在 23-25 之间的



注:库和表的删除用 drop,记录删除用 delete

//修改表中的数据
mysql> update a2 set age=21 where id=3;


//修改数据表的名称
mysql> alter table a2 rename a3;


//修改数据表的字段类型
mysql> describe a1;
mysql> alter table a1 modify name char(50);
mysql> describe a1;



//修改数据表的字段类型详情
mysql> describe a1;
mysql> alter table a1 change name username char(50) not null default '';
mysql> describe a1;



//添加字段
mysql> describe a1;
mysql> alter table a1 add time datetime;
mysql> describe a1;

#添加位置默认在末尾
mysql> alter table a1 add birthday year first; #添加字段到第一列
mysql> alter table a1 add sex nchar(1) after id; #添加到指定字段后

//删除字段
mysql> alter table a1 drop birthday;

MYSQL 用户授权

//授予用户全部权限
mysql> select user from mysql.user;
mysql> grant all on aa.a1 to zhangsan@'%'; #给已存在用户授权
mysql> grant all on aa.a1 to abc@'%' identified by '123456' ; #创建用户并授权

###############################################
GRANT privileges ON  databasename.tablename  TO  'username'@'host'

privileges:表示要授予什么权力,例如可以有 select , insert ,delete,update等,如果要授予全部权力,则填 ALL
databasename.tablename:表示用户的权限能用在哪个库的哪个表中,如果想要用户的权限很作用于所有的数据库所有的表,则填 *.*,*是一个通配符,表示全部。

'username'@'host':表示授权给哪个用户。

例:
GRANT  select,insert  ON  zje.zje  TO 'aaa'@'%';         //表示给用户aaa授权,让aaa能给zje库中的zje表 实行 insert 和 select。

GRANT  ALL  ON  *.*  TO  'aaa'@'%';//表示给用户aaa授权,让aaa能给所有库所有表实行所有的权力。



//取消用户授权
mysql> revoke drop,delete on aa.a1 from abc@'%'; #取消删除权限(登录 abc 测试)
mysql> show grants for abc@'%'; #查看指定用户的授权
mysql> show grants for atguigu@'%';




###############################################
#撤销用户权限

命令:REVOKE   privileges   ON  database.tablename  FROM  'username'@'host';

例如: REVOKE  SELECT ON  *.*  FROM  'zje'@'%';

MySQL备份还原

mysqldump备份:
**
备份:
mysqldump -u 用户名-p 数据库名> /备份路径/备份文件名(备份整个数据库)
mysqldump -u 用户名-p 数据库名表名> /备份路径/备份文件名(备份数据表)
备份多个库:—databases 库1,库2
备份所有库:—all-databases
备份多个表:库名表1表2
还原:mysql数据库< 备份文件
注意:还原时,若导入的是某表,请指定导入到哪一个库中

mysqlhotcopy 备份:
**
备份:mysqlhotcopy —flushlog -u=’用户’-p=’密码’—regexp=正则备份目录
还原:cp-a 备份目录 数据目录(/var/lib/mysql)

mysqldump和mysqlhotcopy示例:

Mysql备份和还原
把数据库aa 备份到/root目录下
#
mysqldump –uroot –p aa > ~/aa.sql
模拟数据库aa丢失(删除数据库aa)
# Mysql>drop database aa;
通过aa.sql文件还原(指定导入到哪个库中)
#
mysql –uroot –p test < aa.sql
备份多个数据库(--databases)
#mysqldump–uroot –p --databases aa test> abc.sql
还原(先模拟丢失)
#
mysql –uroot –p < abc.sql
备份有规则的数据库
Mysql>create database a1;
#连续创建三个a开头的数据库
#
mysqlhotcopy --flushlog –u=‘root’–p=‘456’--regexp=^a
还原(先模拟丢失)
Mysql>drop database a1;
#顺序删除a开头的数据库
#
cp 
–
a /mnt/* /var/lib/mysql/#复制产生的文件到数据库目录下
#登录数据库查看即可

mysql-binlog日志备份:
开启二进制日志
查看二进制日志文件
按时间还原:
如果数据库中的bb库被删,需要还原
查看二进制日志内容
还原并查看

mysqlbinl
og

start
-
datetime=‘2018-09-1
1 14
:24:00’—stop-datetime=‘2018-09-11 14:28:00’
mysql-
bin.000006 | mysql

uroot–p123123
注:所选时间段一定要完整包含所有动作(可以在原来基础上稍微增加点时间)
按文件大小还原:还原到bb库被删除的数据状态
1.查看bb库被删除前后的文件大小
还原并查看