CentOS7 RPM安装Mysql 及授权与备份

CentOS7 RPM安装Mysql :

查看linux操作系统及内核版本
[root@itdev9901 ~]# cat /etc/redhat-release # 查看操作系统版本
CentOS Linux release 7.9.2009 (Core) 
[root@itdev9901 ~]# uname -r # 查看系统内核版本
3.10.0-1160.31.1.el7.x86_64
[root@itdev9901 ~]#
下载安装包
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar
选择 RPM Bundle,下载完记得解压  tar -xvf xxx.tar
# 创建目录并解压
mkdir -p /opt/mysql
tar -xvf mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar -C /opt/mysql
卸载旧版本的MySql (没有的话,则跳过此步骤)
查看旧版本MySql
rpm -qa | grep mysql
逐个删除掉旧的组件
使用命令rpm -e --nodeps {-file-name}进行移除操作,移除的时候可能会有依赖,要注意一定的顺序。
[root@iep-02 mysql]# rpm -qa|grep mariadb
[root@iep-02 mysql]# yum remove mariadb-libs
使用 rpm 命令安装MySql组件

使用命令rpm -ivh {-file-name}进行安装操作
按照依赖关系依次安装rpm包 依赖关系依次为common→libs→client→server
cd /opt/mysql

# 依次执行
rpm -ivh mysql-community-common-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.30-1.el7.x86_64.rpm

注:ivh中, i-install安装;v-verbose进度条;h-hash哈希校验

部分机器出现错误
[root@iep-02 mysql]# rpm -ivh mysql-community-libs-5.7.30-1.el7.x86_64.rpm
警告:mysql-community-libs-5.7.30-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
错误:依赖检测失败:
        mysql-community-common(x86-64) >= 5.7.9 被 mysql-community-libs-5.7.30-1.el7.x86_64 需要
        mariadb-libs 被 mysql-community-libs-5.7.30-1.el7.x86_64 取代
[root@iep-02 mysql]#
解决:清除yum里所有mysql依赖包
[root@iep-02 mysql]# rpm -qa|grep mysql
[root@iep-02 mysql]# yum remove mysql-libs
或者:
[root@iep-02 mysql]# rpm -qa|grep mariadb
[root@iep-02 mysql]# yum remove mariadb-libs
再次安装成功
[root@iep-02 mysql]# rpm -ivh mysql-community-common-5.7.30-1.el7.x86_64.rpm
警告:mysql-community-common-5.7.30-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mysql-community-common-5.7.30-1.e################################# [100%]
[root@iep-02 mysql]# rpm -ivh mysql-community-libs-5.7.30-1.el7.x86_64.rpm
警告:mysql-community-libs-5.7.30-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mysql-community-libs-5.7.30-1.el7################################# [100%]
[root@iep-02 mysql]#

[root@iep-02 mysql]# rpm -ivh mysql-community-client-5.7.30-1.el7.x86_64.rpm
警告:mysql-community-client-5.7.30-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mysql-community-client-5.7.30-1.e################################# [100%]
[root@iep-02 mysql]#

注意细节:
1> 执行 yum remove mysql-libs 命令后,会自动删除掉 /etc/ 下的 my.cnf 文件
2> 对于安装mysql组件,只有安装了 mysql-community-server-5.7.22-1.el7.x86_64.rpm 组件,才会:

a). 在 /etc/下生成 my.cnf 文件 和 my.cnf.d 文件夹

b). 在/var/lib/下生产以下三个文件夹

c). 在/var/log/ 下生成 mysqld.log 文件

d). 在/var/run/ 下生成 mysqld 目录
查看安装路径
rpm -qal |grep mysql
[root@itdev9903 run]# rpm -qal |grep mysql
/usr/bin/mysql
/usr/bin/mysql_config_editor
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
/usr/bin/mysqlimport
/usr/bin/mysqlpump
/usr/bin/mysqlshow
/usr/bin/mysqlslap
/usr/share/doc/mysql-community-client-5.7.30
/usr/share/doc/mysql-community-client-5.7.30/LICENSE
/usr/share/doc/mysql-community-client-5.7.30/README
...

登录并创建MySql密码
1 启动MySql
安装完后,使用命令 service mysqld start 或 systemctl start mysqld.service 启动MySQL服务。(如果mysql服务无法启动,就重启一下系统)

systemctl start mysqld.service    启动mysql
systemctl status mysqld.service  查看mysql状态
systemctl stop mysqld.service   关闭mysql

查看mysql进程 ps -ef|grep mysql
查看3306端口 netstat -anop|grep 3306

查看状态

[root@iep-02 mysql]# systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
[root@iep-02 mysql]#

启动再查看状态
[root@iep-02 mysql]# systemctl start mysqld.service
[root@iep-02 mysql]# systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 四 2021-07-08 15:57:16 CST; 4s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 4785 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 4723 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 4789 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─4789 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

7月 08 15:57:12 iep-02 systemd[1]: Starting MySQL Server...
7月 08 15:57:16 iep-02 systemd[1]: Started MySQL Server.
[root@iep-02 mysql]#
查看是否安装成功
[root@iep-02 mysql]# ps -ef|grep mysql
mysql     4789     1  0 15:57 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root      4852  2069  0 15:57 pts/2    00:00:00 grep --color=auto mysql
[root@iep-02 mysql]# lsof -i
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
chronyd  656 chrony    5u  IPv4  15657      0t0  UDP localhost:323
chronyd  656 chrony    6u  IPv6  15658      0t0  UDP localhost:323
sshd     915   root    3u  IPv4  16174      0t0  TCP *:ssh (LISTEN)
sshd     915   root    4u  IPv6  16176      0t0  TCP *:ssh (LISTEN)
sshd    1550   root    3u  IPv4  24430      0t0  TCP iep-02:ssh->172.18.5.116:49304 (ESTABLISHED)
sshd    1993   root    3u  IPv4  51377      0t0  TCP iep-02:ssh->172.18.5.116:62915 (ESTABLISHED)
sshd    2062   root    3u  IPv4  51494      0t0  TCP iep-02:ssh->172.18.5.116:51224 (ESTABLISHED)
mysqld  4789  mysql   21u  IPv6  55133      0t0  TCP *:mysql (LISTEN)
[root@iep-02 mysql]# netstat -anop|grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      4789/mysqld          off (0.00/0/0)
[root@iep-02 mysql]#

因为服务已经启动了,因此能够用root和这个密码登录了:
mysql -u root -p
password 输入本身得到的密码

提示需要
[root@iep-02 mysql]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@iep-02 mysql]#

登陆mysql修改root密码
由于MySQL5.7.4之前的版本中默认是没有密码的,登录后直接回车就可以进入数据库,进而进行设置密码等操作。其后版本对密码等安全相关操作进行了一些改变,在安装过程中,会在安装日志中生成一个临时密码。
怎么找到这个临时密码呢?

使用:
grep 'temporary password' /var/log/mysqld.log
即可查询到类似于如下的一条日志记录:
[root@iep-02 mysql]# grep 'temporary password' /var/log/mysqld.log
2021-07-08T07:57:14.452490Z 1 [Note] A temporary password is generated for root@localhost: -6Pxiaa>:W_L
[root@iep-02 mysql]#

 -6Pxiaa>:W_L 即为登录密码。使用这个随机密码登录进去,然后修改密码,使用命令:
 mysql -uroot -p 

root@iep-02 mysql]#  mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.30

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
操作提示需要修改密码
mysql> status
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql>
简单密码不会通过
alter user root@localhost identified by '123456';
mysql> alter user root@localhost identified by '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql>
或者:
mysql> set password for root@localhost = password('123456');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql>
生成随机密码
cat /dev/urandom | LC_ALL=C tr -dc "[:alnum:]" | fold -w 10 |head -10
cat /dev/urandom | LC_ALL=C tr -dc "[:graph:]" | fold -w 10 |head -10
更改密码
alter user root@localhost identified by 'password';

mysql> alter user root@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
[root@iep-02 mysql]#
再次登录输入新密码
mysql -uroot -p
mysql> show databases
    -> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql>
此时只能本机访问
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

mysql> select user,host from user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)

mysql>

mysql>  show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql>
设置外部远程访问
权限:
#授予root用户远程访问权限:
mysql> grant all privileges on *.* to root@'%' identified by 'password' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql>

# 刷新权限,使设置生效, OK。
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql>

#再次查看权限:
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql>

开启3306端口 远程访问

firewall-cmd --zone=public --add-port=3306/tcp --permanent  
#刷新防火墙
firewall-cmd --reload  
在远程机器上测试远程连接:  mysql -h 172.18.5.209 -uroot -p
创建用户并授权

一. 创建用户
命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';

说明:
username:你将创建的用户名
host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

# 例子:
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';

二. 授权:
命令:GRANT privileges ON databasename.tablename TO 'username'@'host'
说明:
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*

# 例子:
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
GRANT ALL ON maindataplus.* TO 'pig'@'%';

注意:
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

细分授权

mysql中可以给一个用户授予如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令,用法格式为:
grant 权限 on 数据库对象 to 用户

一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。 
grant select on testdb.* to common_user@'%'
grant insert on testdb.* to common_user@'%' 
grant update on testdb.* to common_user@'%' 
grant delete on testdb.* to common_user@'%' 
或者,用一条 MySQL 命令来替代: 
grant select, insert, update, delete on testdb.* to common_user@'%'

二.设置与更改用户密码

命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是当前登陆用户用:
SET PASSWORD = PASSWORD("newpassword");
例子:
SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");

三. 撤销用户权限
命令:REVOKE privilege ON databasename.tablename FROM 'username'@'host';
说明:
privilege, databasename, tablename:同授权部分

例子:
REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:
假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%',则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作。相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';则REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select权限。

具体信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看。

四.删除用户
命令:DROP USER 'username'@'host';
mysql命令导入导出sql文件

window下

1.导出整个数据库,首先打开要导出的目录

mysqldump -u 用户名 -p 数据库名 > 导出的文件名

mysqldump -u dbuser -p dbname > dbname.sql 下一行需要输入密码

mysqldump -uroot -ppasswd [dbname]> english.sql 在本行直接输入密码

2.导出一个表

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

mysqldump -u dbuser -p dbname users> dbname_users.sql

3.导出一个数据库结构

mysqldump -u dbuser -p -d --add-drop-table dbname >d:/dbname_db.sql

-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库

常用source 命令

进入mysql数据库控制台,如

mysql -u root -p

mysql>use 数据库

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

mysql>source d:/dbname.sql

linux下

一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):

1、导出数据和表结构:

mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql

\#/usr/local/mysql/bin/  mysqldump -uroot -p abc > abc.sql

敲回车后会提示输入密码

2、只导出表结构

mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql

\#/usr/local/mysql/bin/  mysqldump -uroot -p -d abc > abc.sql

注:/usr/local/mysql/bin/ ---> mysql的data目录

二、导入数据库

1、首先建空数据库

mysql>create database abc;

2、导入数据库

方法一:

(1)选择数据库

mysql>use abc;

(2)设置数据库编码

mysql>set names utf8;

(3)导入数据(注意sql文件的路径)

mysql>source /home/abc/abc.sql;

方法二:

mysql -u用户名 -p密码 数据库名 < 数据库名.sql

#mysql -uabc_f -p abc < abc.sql
权限列表:
  • ALTER: 修改表和索引。
  • CREATE: 创建数据库和表。
  • DELETE: 删除表中已有的记录。
  • DROP: 抛弃(删除)数据库和表。
  • INDEX: 创建或抛弃索引。
  • INSERT: 向表中插入新行。
  • REFERENCE: 未用。
  • SELECT: 检索表中的记录。
  • UPDATE: 修改现存表记录。
  • FILE: 读或写服务器上的文件。
  • PROCESS: 查看服务器中执行的线程信息或杀死线程。
  • RELOAD: 重载授权表或清空日志、主机缓存或表缓存。
  • SHUTDOWN: 关闭服务器。
  • ALL: 所有权限,ALL PRIVILEGES同义词。
  • USAGE: 特殊的 "无权限" 权限。
mysql命令行清屏

有4种方法:
system clear
sytem reset
! clear
commond+l

备份

# 建备份账号 
grant select,lock tables on *.* to 'barkup'@'192.168.100.%' identified by 'pwd@123';
 
# 不带库
mysqldump -u dbuser -p'passwd' --single-transaction --default-character-set=utf8 dbname > dbname_$(date '+%Y%m%d_%H%M%S').sql

# 带库
mysqldump -u dbuser -p'passwd' --single-transaction --default-character-set=utf8 -B dbname > dbname_$(date '+%Y%m%d_%H%M%S').sql

# 导入
mysql -uroot -p'password'  db_dbtest < db_20210804_152823.sql

# mysqldump工具备份
# 备份整个数据库
mysqldump -u root -h host -p dbname > backdb.sql
#备份数据库中的某个表
mysqldump -u root -h host -p dbname tbname1, tbname2 > backdb.sql
# 备份多个数据库
mysqldump -u root -h host -p --databases dbname1, dbname2 > backdb.sql
#备份系统中所有数据库
mysqldump -u root -h host -p --all-databases > backdb.sql
# 样例
mysqldump -uroot -p'password' --single-transaction --default-character-set=utf8 --all-databases > dbackdb_$(date '+%Y%m%d_%H%M%S').sql
  • shell备份

    #!/bin/bash
    <!--定义数据库连接、目标信息库等信息:-->
    user="repl"      <!--授权的账户-->
    pass="passwd"       <!--授权账户的密码-->
    host="172.18.5.209"    <!--目标服务器IP地址-->
    conn="-u $user -p$pass -h $host"
    data1="db1"             <!--备份的数据库名字-->
    data2="db2"    <!--备份的数据库名字-->
    bak="/opt/backup"          <!--指定备份目录-->
    cmd="/usr/bin/mysqldump"      <!--指定命令工具-->
    time=`date +%Y-%m-%d-%H-%M`      <!--定义时间变量-->
    name_1="$data1-$time"        <!--定义备份后的名字-->
    name_2="$data2-$time"        <!--定义备份后的名字-->
    cd $bak           <!--切换至备份目录下-->
    $cmd $conn --databases $data1 > $name_1.sql      <!--备份为.sql文件-->
    $cmd $conn --databases $data2 > $name_2.sql      <!--备份为.sql文件-->
    /bin/tar zcf $name_1.tar.gz $name_1.sql --remove > /dev/null    <!--打包后删除源文件-->
    /bin/tar zcf $name_2.tar.gz $name_2.sql --remove > /dev/null    <!--打包后删除源文件-->
    
  • 安全备份

# 随机密码
cat /dev/urandom | LC_ALL=C tr -dc "[:graph:]" | fold -w 10 |head -10
# 建备份账号 
grant select,reload,REPLICATION CLIENT, REPLICATION SLAVE,lock tables on *.* to 'barkup'@'10.%.%.%' identified by 'p0B4`^1ukW';
grant all privileges on *.* to 'barkup'@'localhost' identified by 'p0B4`^1ukW';

# 刷新权限
FLUSH PRIVILEGES;

# 安全登录解决的方法。
# mysql_config_editor的--login-path可以完成该工作。
# mysql_config_editor命令使用:
mysql_config_editor set --login-path=mydbbarkup --host=localhost --port=3306 --user=barkup --password
# 完成配置后,生成一个mydb的登录点(login-path),密钥保存在$HOME/.mylogin.cnf。以后访问数据库只要指定login-path的名称即可
mysql --login-path=mydbbarkup

# 全量备份
# --single-transaction: 基于此选项能实现热备InnoDB表;因此,不需要同时使用--lock-all-tables;
# --master-data=2  记录备份那一时刻的二进制日志的位置,并且注释掉,1是不注释的
# --databases hellodb 指定备份的数据库
backup_dir="/data/backup/mysql"
database="test"
filename="${backup_dir}/${database}_`date +%Y-%m-%d-%H%M`.sql"
mysqldump --login-path=mydbbarkup --single-transaction --master-data=2 --default-character-set=utf8 --set-gtid-purged=OFF --triggers --routines --events --dump-date --databases $database > $filename

#!/bin/bash

# 全库备份
# sh all_barkup.sh db_name
# 默认为sywn
# 第一个参数:db_name

# 登录密钥
login_path="mydbbarkup"
# 备份路径
# 提前准备目录
backup_dir="/data/backup/mysql"
backup_dir="/root/test"

# 备份命
cmd="/usr/bin/mysqldump"  
# 当前时间
time=`date +%Y-%m-%d-%H-%M` 

bark_all()
{
    # 需备份库名
    db_name=$1
    database=${db_name:-'sywn'}

    # 保存文件名
    filename="${backup_dir}/${database}_$time.sql"

    # 执行备份
    $cmd --login-path=${login_path} \
    --single-transaction \
    --master-data=2 \
    --default-character-set=utf8 \
    --set-gtid-purged=OFF \
    --triggers --routines --events \
    --dump-date \
    --databases $database > $filename
}

# 执行
CALL_DO() {
    while [ $# -ne 0 ]
    do
        # 打印特殊变量$1的值,及特殊变量$#的值
        echo "Current Parameter: $1, Remaining $#."
        bark_all $1                     
        # 将位置参数左移一位
        shift
        done
}

# 执行
CALL_DO $*
  • 清屏

    system clear
    
  • 查看权限

    # 权限列表 
    SHOW PRIVILEGES;
    # 单用户权限
    show grants for dbdev@'%';
    
  • 日志

    # general_log会记录所有的SQL操作,一般不建议开启。
    show global variables like '%general%';
    tail -f  /var/lib/mysql/itdev9903.log | grep "Connect"
    
    # 开启general_log
    set global general_log=on;
    
  • 授权

    grant all privileges on *.* to root@'172.18.5.127' identified by 'password' WITH GRANT OPTION;
    
  • 回收权限

    # 回收所有
    revoke all privileges,grant option from 'xxx'@'%';
    # 回收
    REVOKE SELECT ON *.* FROM 'xxx'@'%';
    
  • 常用操作

    create database if not exists db default charset utf8 collate utf8_general_ci;
    CREATE USER 'dbdev'@'%' IDENTIFIED BY 'NGRDNag(f8E';
    grant insert,delete,update,select,create,drop,alter,index,lock tables on db.* to 'dbdev'@'%' ;
    FLUSH PRIVILEGES;
    DROP USER 'dbdev'@'%';
    
  • 查看用户权限

    show grants for root@'%';
    
  • 删除用户

    Delete FROM user Where User='root' and Host='172.18.5.127';
    
  • 刷新

    flush privileges;
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容