云运维-任务1-MySQL创建与管理-20201102

一、项目名称:MySQL创建与管理

 

二、项目要求:

1. 在centos上安装mysql
2. 创建两个普通用户,每个用户分别管理一张表

 

三、实验过程:

 

1、下载、安装mysql

#cd /usr/local/src/     //建议所有软件包可以放到此目录下
#https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz      // 下载mysql压缩包
#tar zxvf mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz   //解压
#useradd mysql             //创建mysql用户
#mkdir -p /data/mysql     //创建目录
#chown -R mysql:mysql /data/mysql      // 更改权限,不更改后续操作就会出问题
#[ -d /usr/local/mysql ] && mv  mysql-5.6.47-linux-glibc2.12-x86_64   /usr/local/mysql   //挪动位置
#cd /usr/local/mysql/        //进入修改目录后的位置
#ls                           //查看是否有文件
bin   docs     lib      man         README   share      support-files
data  include  LICENSE  mysql-test  scripts  sql-bench

#yum install -y perl-Data-Dumper.x86_64   //下载缺失的perl模块3
#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql     //初始化,指定用户,指定数据库目录
#echo $?     //若难分辨命令产生的结果是否正确,可以使用此命令检验
0
#cp support-files/my-default.cnf /etc/my.cnf       //拷贝配置文件
cp: overwrite ‘/etc/my.cnf’? y
#vi /etc/my.cnf             //修改配置文件、添加datadir、socket、port
把 basedir、datadir、port 前的#号去掉,修改为:
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306

#cp support-files/mysql.server /etc/init.d/mysql   //移动启动脚本
#vi /etc/init.d/mysql                         //修改启动脚本。找到下面这两行定义basedir和datadir
basedir=/usr/local/mysql
datadir=/data/mysql
#chkconfig --add mysql     //设置开机自启动
#/etc/init.d/mysql start       //启动mysql

2、安全配置向导

#ln -s /usr/local/mysql/bin/* /usr/bin
# mysql_secure_installation 
回车
输入“y”
123456    //配置数据库密码
123456    //确认密码
输入“y”    //是否删除匿名用户,生产环境建议删除
输入“n”    //是否禁止root远程登录,根据自己的需求选择Y/n并回车
输入“y”    //是否删除test数据库
输入“y”    //是否重新加载权限表

3、登入数据库、创建两个用户、创建两张表

# mysql -uroot -p
Enter password:

> show databases;     //查看已有数据库
> use mysql
> select database();   //查看当前所在的数据库
> create user 'user1'@'localhost' identified  by  '123';
> create user 'user2'@'localhost' identified  by  '123';
> select user();    //查看当前所在用户
>  select * from user;     //查看已创建的用户


> create table if not exists `tables1`(                         //创建第一张名为 tables1 的表
  -> tables1 INT NOT NULL AUTO_INCREMENT, 
  -> tables1_titile VARCHAR(100) NOT NULL, 
  -> tables1_author VARCHAR(40) NOT NULL, 
  -> submission_date DATE, PRIMARY KEY ( tables1 ) 
  -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;

> create table if not exists `tables2`(                        //创建第二张名为 tables2 的表
 -> tables2 INT NOT NULL AUTO_INCREMENT, 
 -> tables2_titile VARCHAR(100) NOT NULL, 
 -> tables2_author VARCHAR(40) NOT NULL, 
 -> submission_date DATE, PRIMARY KEY ( tables2 ) 
 -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;

> show tables;
> desc tables1;     //查看表结构
> desc tables2;    //查看表结构

4、给user1和user2赋予权限,分别管理tables1、tables2

> grant select,insert,update on mysql.tables1 to 'user1'@'localhost';      //赋予查询、插入、更新权限,看具体需求
> grant select,insert,update on mysql.tables2 to 'user2'@'localhost';
> show grants;     //查看现有规则

5、测试。分别登入user1、user2,查看各自数据库中是否只有属于自己的表

# mysql -uuser1 -p
Enter password:       //输入密码:123

> select user();
> show databases;
> use mysql;
> select database();
> show tables;

 

四、额外实验:

制定一个定时任务:每天凌晨三点备份一次数据库

 

实验过程:

#mkdir  -p /home/backup
#cd  /home/backup
#vi  mysql_bak.sh        //编辑shell脚本
#!/bin/bash
mysqldump  mysql > /home/backup/mysql_$(date +%Y%m%d_%H%M%S).sql

如果是直接在脚本中明文密码,执行脚本会有错误警告,
所以这里没有设置用户密码,还需进入 /etc/my.cnf 编辑如下内容:
[mysqldump]
user=your_user
password=your_password           //这里的 your_user和 your_password  输入自己配置的用户密码即可!

#chmod u+x    mysql_bak.sh

执行定时任务:
#crontab -e       //编辑工作表
0 3 * * * /home/backup/mysql_bak.sh   //每天凌晨三点备份一次数据库   (我感觉是这样。。。(+_+)?)
* * * * * /home/backup/mysql_bak.sh    //这是每分钟备份一次,实测可以
#crontab -l        //列出工作表里的命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值