MySQL数据库管理4-hj
修改数据库管理员本机登录密码# mysqladmin -hlocalhost-uroot-p
password"新密码"
恢复数据管理员本机登录的密码
vim /etc/my.cnf
#validate_password_policy=0
#validate_password_length=6
skip-grant-tables
:wq
#systemctl restart mysqld
#mysql
mysql> updatemysql.user
-> set
-> authentication_string=password("123123")
-> where
-> user="root" and host="localhost";
mysql> flush privileges;
mysql>quit
vim /etc/my.cnf
validate_password_policy=0
validate_password_length=6
#skip-grant-tables
:wq
#systemctl restart mysqld
#mysql-uroot-p123123
mysql>
+++++++++++++++++++++++++
用户授权
*默认只允许数据库管理员从本机登录。
*默认只有数据库管理员在本机登录才有授权权限。
给谁授权: 管理者(运维工作人员) 使用者(网站服务器)
授权命令
mysql> grant 权限列表 on数据库名 to用户名;
mysql> grant 权限列表 on数据库名 to用户名@"客户地
址"identified by "密码"withgrantoption;
权限列表
all所有权限
select,insert,update(name,age)
数据库名的表示方式:
*.*所有库所有表
库名.* 某个库
库名.表 某张表
用户名:授权时自定义的
客户地址表示方式
%所有主机
192.168.4.% 网段
192.168.4.7 ip地址
主机名 pc101.tedu.cn
域名 %.tedu.cn
identified by "密码" 登录密码 (可选项)
withgrantoption 有授权权限 (可选项)
添加yaya用户可以在本机登录,对所有库表有完全权限但不能授
权,登录密码654321
mysql> grant all on *.* to yaya@"localhost"
->> mysql> selectuser(); 显示当前登录的用户和客户端地址
mysql> show grants; 显示当前登录用户的访问权限
添加plj用户可以在x.x.x.254登录,对所有库表有完全权限并有
授权权限,登录密码654321
mysql> grant all on *.*to plj@"192.168.4.254"
identified by "654321" withgrant option;
MySQL [(none)]> grantall onbbsdb.*tostudent
identified by "654321";
授权user1用户可以在网络中的任意主机连接数据库服务器,连
接后仅对userdb库下user表有查询 插入 更新权限 更新时只能
更新name字段的值,登录密码123456;
grant select ,insert ,update(name)onuserdb.userto
user1@"%"> 授权信息储存在mysql库下的表里
user存储已有的授权用户
db 记录授权用户对库访问权限
tables_priv 记录授权用户对表访问权限
columns_priv记录授权用户对表中字段的访问权限
查看一样的授权用户和登录客户端地址
selectuser,hostfrommysql.user;
管理用户查看授权用户的访问权限
mysql> show grants for 用户名@"客户端地址";
权限撤销
mysql> revoke 权限列表on库名 from 用户名@"客户
端地址";
撤销plj用户在x.x.x.254登录的授权权限
revokegrantoptionon*.*from
plj@"192.168.4.254";
撤销plj用户在x.x.x.254登录后删除表记录的权限
revokedelete on *.*fromplj@"192.168.4.254";
撤销plj用户在x.x.x.254登录后所有的权限
revokeallon *.*from plj@"192.168.4.254";
删除授权用户
mysql> deletefrom mysql.userwhere user="plj" and
host="192.168.4.254";flush privileges;
mysql> dropuserplj@"192.168.4.254";
授权用户修自己的登录密码
SET PASSWORD=PASSWORD('新密码');
数据库管理重置授权用户的登录密码
SET PASSWORDfor 用户@"客户端地址"=PASSWORD('
新密码');
练习
1 删除以上所有的授权用户。
2 允许254 主机可以使用数据库管理员连接数据库服务器,并拥
有管理员的权限。
grant allon*.* toroot@"192.168.4.254"identified
by"123123"with grant option;
3 不允许数据库管理员在数据库服务器本机登录。
delete from mysql.user where
-> user="root" and host="localhost"; flush privileges;
4 授权webadmin用户对webdb有完全权限,并有授权权限,
在网络中所有主机都可以连接数据库服务登录密码123456
grantall onwebdb.*to webadmin@"%"
->> grantinsertonmysql.*towebadmin@"%";
5 测试以上授权
6 删除以上授权并只允许数据库管理员从服务器本机登录。
grant all on*.*toroot@"localhost"> "123123" withgrant option;
delete from mysql.user where
-> host!="localhost";
mysql> flush privileges;
+++++++++++++++++++++++++++++++++
安装mysql服务图形管理工具 phpmyadmin
137rpm -q httpdphp
138rpm -q php-mysql
139yum -yinstall httpdphpphp-mysql
140rpm -q httpdphpphp-mysql
141systemctlstart httpd
142systemctlstatus httpd
143systemctlenable httpd
144systemctlis-enabled httpd
145echo 123> /var/www/html/test.html
147yum -yinstall elinks
148elinks--dump http://localhost/test.html
149vim /var/www/html/test.php
:wq
150elinks--dump http://localhost/test.php
154tar -zxvf phpMyAdmin-2.11.11-all-
languages.tar.gz
167mv phpMyAdmin-2.11.11-all-languages
/var/www/html/phpmyadmin
168cd /var/www/html/
171chown -R apache:apachephpmyadmin/
172cd phpmyadmin/
174cp config.sample.inc.php config.inc.php
# vim config.inc.php
17 $cfg['blowfish_secret'] = 'plj123';
31 $cfg['Servers'][$i]['host'] = 'localhost';
:wq
mysql -uroot-p123123
mysql> create database gamedb;
mysql> grant all ongamedb.* to
gameuser@"localhost"> mysql-hlocalhost-uroot-p123123
firefoxhttp://192.168.4.12/phpmyadmin
gameuser
123456
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
数据备份与恢复
1 为什么对数据做备份?使用备份文件恢复数据。
2 数据备份方式?
物理备份:拷贝库或表对应的系统文件
193tar -zcvf/opt/mysql.tar.gz
/var/lib/mysql/mysql/*
180cp -r /var/lib/mysql/mysql/opt/mysql.bak
181ls /opt/
182ls /opt/mysql.bak/
183rm -rf /var/lib/mysql/mysql
184systemctlstatus mysqld
185quit
186cp -r /opt/mysql.bak/ /var/lib/mysql/mysql
187cd /var/lib/mysql
188ll
189chown-R mysql:mysql /var/lib/mysql/mysql
190systemctlrestart mysqld
191mysql -uroot -p123123
逻辑备份:执行备份时,根据已有的库、表、记录,生成对应的
sql 命令,把SQL保持到指定的文件里。
3 数据备份策略
完全备份:备份所有数据
一台数据库服务器的所有数据
一个库的所有数据
一张表的所有数据
差异备份:备份自完全备份后,所有新产生的数据
增量备份:备份自上次备份后,所有新产生的数据
完全
差异
增量
单独使用完全备份
完全备份+差异备份
完全备份+增量备份
方式 策略
完全备份+差异备份
周期 时间 regtab 备份文件名
1 完全 18 10 1.sql 10
2 差异 18 2 2.sql 2
3 18 5 3.sql7
4 18 3 4.sql 10
5 4 5.sql 14
6 7 6.sql 21
7 差异 1 7.sql 22
方式 策略
完全备份+差异备份
周期 时间 regtab 备份文件名
1 完全 18 10 1.sql 10
2 增量 18 2 2.sql 2
3 18 5 3.sql5
4 18 3 4.sql 3
5 4 5.sql 4
6 7 6.sql 7
7 增量 1 7.sql 1
完全备份
周期 时间 regtab 备份文件名
1 完全 18 10 1.sql 10
2
delete from t1;
2 18 2 2.sql 2
3 18 5 3.sql5
4 18 3 4.sql 3
5 4 5.sql 4
6 7 6.sql 7
7 完全 1 7.sql 1
生产环境中 使用
周期性计划任务 备份脚本
30 18 * * 1 /shell/allbak.sh
++++++++++++++++++++++++++++++++
完全备份数据
mysqldump -hlocalhost-uroot-p123123数据库名 >
目录名/名.sql
数据库名的表示方式:
--all-databases 一台数据库服务器的所有数据
库名 一个库的所有数据
库名表名 一张表的所有数据
-B库名1库名2一起备份多个库的所有数据
#mysqldump-hlocalhost -uroot -p123123userdb t2 >
/opt/t2.sql
完全数据恢复
mysql -uroot -p123123数据库名< 备份文件
#mysql -uroot -p123123userdb < /opt/t2.sql
编写脚本allbakt2.sh 功能:
把服务器上userdb库t2表的所有记录备份到本机/mybak文件夹里。使用系统日期做备份文件名例如 2017-05-25-t2.sql
#! /bin/bash
day=$(date +%F)
if[ ! –e /mydbbak] ; then
mkdir/mydbbak
fi
mysqldump-uroot-pabc123userdb> /mydbbak/$day-userdb.sql
页:
[1]