数据库管理

1.数据库权限操作

1.1创建数据库

1 .创建数据库keystone_db并授权给keystone_user用户从哪些地址登录

MariaDB [(none)]> CREATE DATABASE keystone_db CHARACTER SET utf8 COLLATE utf8_general_ci;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone_db.* TO 'keystone_user'@'localhost' IDENTIFIED BY 'keystone_pwd';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone_db.* TO 'keystone_user'@'%' IDENTIFIED BY 'keystone_pwd';

2 .查看当前在哪个库

select database();

3. 查看有哪些数据库

MariaDB [(none)]> show databases;

1.2修改已存在的库字符集为utf8mb4

1.字符集修改

# 修改库:    
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# 修改表:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 修改一列:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2.字符集的查看

MariaDB [(none)]> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

1.3对数据库进行授权只读和管理用户

1 .创建只读和管理用户

-- 管理员权限
GRANT ALL PRIVILEGES ON keystone_db.* TO 'keystone_admin'@'%' IDENTIFIED BY 'pwd_admin';

-- 只读账号
GRANT Select ON keystone_db.* TO 'keystone_reader'@'%' IDENTIFIED BY "pwd_read";

-- 刷新权限:
FLUSH PRIVILEGES;    

2 .移除权限

REVOKE  ALL ON keystone_db.*    FROM  'keystone_admin'@'%';  
#移除   所有    keystone_db库.*  来自 "keystone_admin用户"@所有地址

REVOKE select   ON *.*   FROM   'keystone_admin'@'%';  
#移除   查询   所有库.*   来自   "keystone_admin用户"@所有地址

#刷新权限:
MariaDB [(none)]> FLUSH PRIVILEGES;   

3 .查看用户权限

# 具有所有权限
-- show grants for 用户;

MariaDB [(none)]> show grants for keystone_user;
+--------------------------------------------------------------------------------------------------------------+
| Grants for keystone_user@%                                                                                   |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'keystone_user'@'%' IDENTIFIED BY PASSWORD '*DF6189899B5031F828E09AE5459B76FBF3436D24' |
| GRANT ALL PRIVILEGES ON `keystone_db`.* TO 'keystone_user'@'%'                                               |
+--------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

# 只有select权限
MariaDB [(none)]> show grants for keystone_reader;                                                
+----------------------------------------------------------------------------------------------------------------+
| Grants for keystone_reader@%                                                                                   |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'keystone_reader'@'%' IDENTIFIED BY PASSWORD '*7A117767F925D66FF88127B76459008FD2A1469D' |
| GRANT SELECT ON `keystone_db`.* TO 'keystone_reader'@'%'                                                       |
+----------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

2.表操作

2.1查看操作

1. 查看列的结构

desc 表名;

2.修改表名称(速度非常快,3千万数据少于1秒):

alter table 旧名称 rename 新名称;

数据库指定表的增量备份

# 获取当前“备份”表的 最大 ID 号:
mysql -h 127.0.0.1 -ukeystone_user -pkeystone_pwd -e"use keystone_db;select Max(keystone_id) from tbl_ap_keystone_bak;" |awk -F '[ ]' 'NR==2{print $1}'

# 通过备份库的“ID号” 大于这个号的值做备份:35383100 为具体值
mysqldump -h 127.0.0.1 -ukeystone_user -pkeystone_pwd -t keystone_db tbl_ap_keystone --where="keystone_id>35383100" > /opt/data/keystone_db/tbl_ap_keystone.bak.sql 

# 将备份的数据修改内部数据库库名:
sed -i "s/tbl_ap_keystone/tbl_ap_keystone_bak/g" /opt/data/keystone_db/tbl_ap_keystone.bak.sql 

# 将备份数据增加到备份库
cd /opt/data/keystone_db/ && mysql -h 127.0.0.1 -ukeystone_user -pkeystone_pwd -e"use keystone_db;source tbl_ap_keystone.bak.sql;"
posted @ 2018-04-23 15:41  叨客厨子  阅读(208)  评论(0编辑  收藏  举报