在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。
卸载
卸载 停用mysql进程,没有安装过直接跳过此步骤netstat- antp
pkill -9 mysqld
rpm -qa|grep -i mysql
安装
MySQL 官网下载自己所需要的 MySQL 版本,官网地址:https://dev.mysql.com/downloads/repo/yum/,或者用wget命令下载:
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中查看版本
命令
刷新权限
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库被删除前后的文件大小
还原并查看