我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql用户管理、常用语句、数据分备份恢复

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql用户管理、常用语句、数据分备份恢复

mysql用户管理

创建用户并授权

  • 指定登录ip

    使用root用户登录录创建授权新用户:
    mysql> grant all on . to 'user1'@'127.0.0.1' identified by '123456';
    // all 所有操作(增删查改)
    // 第一个 通配所有库名,第二个通配所有表名
    // user1 为用户名
    // 127.0.0.1 指定登录ip,可用通配符%表示所有ip。
    // ‘123456’ 为user1用户的登录密码
    Query OK, 0 rows affected (0.00 sec)

    使用user1用户登录,验证:
    [root@localhost ~]# mysql -uuser1 -p
    Enter password: 
    ERROR 1045 (28000): Access denied for user 'user1'@'localhost' (using password: YES)
    // 登录失败,因为mysql默认使用socket登录。需要指定地址。
    [root@localhost ~]# mysql -uuser1 -h227.0.0.1 -p
    Enter password: 
    Welcome to the MySQL monitor. Commands end with ; or \g.
    .....
    mysql> 
    // 登录成功。其中grant语句是不会记录到命令历史中的。

  • 指定登录socket

    使用root用户重新对user1用户授权:
    mysql> grant all on . to 'user1'@'localhost' identified by '123456';

    退出root用户,使用user1 用户登录:
    [root@localhost ~]# mysql -uuser1 -p
    Enter password: 
    Welcome to the MySQL monitor. Commands end with ; or \g.
    .....
    mysql> 
    // 因为指定登录主机为localhost,所以该用户默认使用(监听)本地mysql.socket文件,不需要指定IP即可登录。

针对具体的权限授权

使用root用户登录:
mysql> grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.159.132' identified by '123456';// 创建user2用户,并授权其针对db1库中的所有表有SELECT,UPDATE,INSERT 权限。// user2用户仅能通过ip 192.168.159.132 登录。Query OK, 0 rows affected (0.00 sec)

查看用户授权信息:

mysql> show grants;// 查看当前用户的授权信息mysql> show grants for user1@127.0.0.1;// 查看指定用户的授权信息

更改授权

使用情况:user2用户不仅需要在192.168.159.132上登录,还需要在192.168.159.133上登录,这时候就需要把授权的命令全部在执行一遍

查看user2具有哪些权限:
mysql> show grants for user2@'192.168.159.132';
+--------------------------------------------------------------------------------------------------------------------+
| Grants for user2@192.168.159.132                                                                                   |
+--------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user2'@'192.168.159.132' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT SELECT, INSERT, UPDATE ON `db1`.* TO 'user2'@'192.168.159.132'       +--------------------------------------------------------------------------------------------------------------------+2 rows in set (0.00 sec)

执行user2的授权命令:// 将ip改成192.168.159.133mysql>GRANT USAGE ON *.* TO 'user2'@'192.168.159.132' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'mysql> GRANT SELECT, INSERT, UPDATE ON `db1`.* TO 'user2'@'192.168.159.132';

查看user2@192.168.159.133的授权:
mysql> show grants for user2@'192.168.159.133';
+--------------------------------------------------------------------------------------------------------------------+
| Grants for user2@192.168.159.133                                                                                   |
+--------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user2'@'192.168.159.133' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT SELECT, INSERT, UPDATE ON `db1`.* TO 'user2'@'192.168.159.133'       +--------------------------------------------------------------------------------------------------------------------+2 rows in set (0.00 sec)// 授权成功后,user3用户就可以在192.168.159.133对db1进行操作。(如不能远程链接,检查以下防火墙规则。)// user2在两个ip上登录使用的是用一个密码。// 重新授权时,权限行的内容和操作的库表能修改。

常用sql语句

先用mysql用户登录mysql

mysql> use db1; //切换到db1库Database changed

mysql> show tables; //查看当前库中有哪些表。+---------------+
| Tables_in_db1 |
+---------------+
| t1            |
+---------------+1 row in set (0.00 sec)

mysql> select count(*) from mysql.user;// 查看mysql库中的user表有几行+----------+
| count(*) |
+----------+
|       15 |
+----------+1 row in set (0.00 sec)

mysql> select * from mysql.db \G;// 查看mysql库的db表中的所有内容// * 表示所有内容,\G是为了让输出内容整齐*************************** 1. row ***************************
                 Host: %
                   Db: test
                 User: 
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: N
         Execute_priv: N
           Event_priv: Y
         Trigger_priv: Y

......// 这种操作平时尽量不要用,内容多的情况下select*会比较占资源。mysql> select db from mysql.db;// 查看db这个字段,在mysql库的db表中+---------+
| db      |
+---------+
| test    |
| test\_% |
| db1     |
| db1     |
| db1     |
| db1     |
| db1     |
| db1     |
+---------+8 rows in set (0.00 sec)

mysql> select db,user from mysql.db;// 查看db和user字段,在mysql库的db表中// 需要查看的字段之间用逗号隔开+---------+-------+
| db      | user  |
+---------+-------+
| test    |       |
| test\_% |       |
| db1     | user2 |
| db1     | user3 |
| db1     | user4 |
| db1     | user2 |
| db1     | user3 |
| db1     | user2 |
+---------+-------+8 rows in set (0.00 sec)

mysql> select * from mysql.db where host like '192.168.%'\G; 
// 查看所有IP匹配192.168.%的内容,从mysql库的db表中// like  匹配,*************************** 1. row ***************************
                 Host: 192.168.159.131
                   Db: db1
                 User: user2
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: N
          Create_priv: N
            Drop_priv: N
           Grant_priv: N
      References_priv: N
           Index_priv: N
           Alter_priv: N
Create_tmp_table_priv: N
     Lock_tables_priv: N
     Create_view_priv: N
       Show_view_priv: N
  Create_routine_priv: N
   Alter_routine_priv: N
         Execute_priv: N
           Event_priv: N
         Trigger_priv: N
......

mysql> create table t1(`id` int(4),`name` char(40));// 在db1库下创建表ti// 有id和name两个字段Query OK, 0 rows affected (0.39 sec)

mysql> insert into db1.t1 values(1,'abc');// 向t1表中添加一行数据Query OK, 1 row affected (0.00 sec)

mysql> select * from db1.t1;// 查看t1表中的内容+------+------+
| id   | name |
+------+------+
|    1 | abc  |
+------+------+1 row in set (0.00 sec)// 添加数据时,字符串尽量加单引号。mysql> update db1.t1 set name='aaa' where id=1;// 更新表中id为1的那一行name 的内容。Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from db1.t1;
+------+------+
| id   | name |
+------+------+
|    1 | aaa  |
+------+------+1 row in set (0.00 sec)

mysql> delete from db1.t1 where id=1;// 删除表中id为1那一行的内容Query OK, 1 row affected (0.00 sec)

mysql> select * from db1.t1;Empty set (0.00 sec)

mysql> truncate db1.t1; 
// 清空表中的内容,表结构还在Query OK, 0 rows affected (0.09 sec)

mysql> drop table t1;// 删除表,整个表都删除,包括内容和表结构Query OK, 0 rows affected (0.04 sec)

mysql> drop database db1;// 删除库,整个库都删除,包括表Query OK, 0 rows affected (0.13 sec)// 平时尽量少用truncate和drop。mysql> use mysql;
mysql> delete from user where User='user1' and Host='127.0.0.1';// 删除用户,在删除用户前需先指定用户表Query OK, 1 row affected (0.06 sec)

mysql数据库备份恢复

  • 备份恢复库

    [root@localhost ~]# mysqldump -uroot -p123456 mysql >/tmp/mysqlbak.sql
    // 备份指定库(mysql库)到/tmp/mysqlbak.sql文件中

    [root@localhost ~]# mysqldump -uroot -p123456 -A >/rmp/mysqlbak_all.sql
    // 备份所有库到/tmp/mysqbak_all.sql 文件中

    [root@localhost ~]# mysql -uroot -p123456 mysql< /tmp/mysqlbak.sq
    // 恢复到mysql库中。也可以恢复到新的库中(需新建库)

  • 备份恢复表

    [root@localhost ~]#mysql -uroot -p123456 mysql user > /tmp/user.sql
    // 备份指定表。在库名后空格跟表名就行

    [root@localhost ~]#mysqldump -uroot -p123456 -d mysql > /tmp/mysql_tb.sql
    // 只备份表结构

    [root@localhost ~]#mysql -uroot -p123456 mysql < /tmp/user.sql
    // 恢复的时候不需要加表名

    // 数据量小用mysqldump备份还可以,备份量大不适用。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql用户管理、常用语句、数据分备份恢复

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用SQL语句在MySQL中进行数据备份和恢复?

如何使用SQL语句在MySQL中进行数据备份和恢复?在数据库中,数据备份和恢复是非常重要的操作,可以保证数据的安全性并且在遇到意外情况时能够迅速恢复数据。MySQL是一个非常常用的关系型数据库,它提供了多种方式来进行数据备份和恢复,其中一种
如何使用SQL语句在MySQL中进行数据备份和恢复?
2023-12-17

如何在MongoDB中使用SQL语句进行数据备份和恢复?

如何在MongoDB中使用SQL语句进行数据备份和恢复?摘要:MongoDB是一个非关系型数据库,而SQL是关系型数据库的查询语言。但是,有些时候,我们可能需要使用SQL语句来备份和恢复MongoDB中的数据。本文将介绍如何在MongoDB
如何在MongoDB中使用SQL语句进行数据备份和恢复?
2023-12-17

使用DBeaver进行mysql数据备份与恢复

目录 前言 一、Dbeaver是什么? 二、Dbeaver如何备份与恢复数据 1.备份Mysql数据 2.恢复Mysql数据 三、导入sql失败与解决 ?总结 前言 项目迭代、版本升级的过程中,有时候会涉及到数据库表结构的更改,因而,数据
2023-08-18

数据库管理与高可用第四章备份与恢复

原文:https://blog.51cto.com/14625831/2547968
数据库管理与高可用第四章备份与恢复
2021-03-24

如何使用MySQL进行数据备份和恢复?

如何使用MySQL进行数据备份和恢复?数据库中的数据对于任何企业或个人而言都是非常重要的。由于各种原因(如硬件故障、人为错误或恶意攻击等),数据可能会丢失或损坏。因此,定期进行数据库备份是非常重要的。MySQL作为最受欢迎的开源关系型数据库
2023-10-22

云服务器数据库备份怎么恢复正常使用

云服务器数据库备份的恢复方法备份数据库通常需要选择可靠的云服务器提供商来进行备份。选择云服务器提供商时,需要考虑以下因素:云服务器提供商的信誉和品牌选择知名度高、品牌声誉良好的云服务器提供商,可以保证备份的数据的可靠性和安全性。同时,品牌声誉也是用户选择的一个重要考虑因素。云服务器提供商的服务质量选择一个可靠的云服务器
云服务器数据库备份怎么恢复正常使用
2023-10-28

如何使用SQL语句在MySQL中进行数据权限和用户管理?

如何使用SQL语句在MySQL中进行数据权限和用户管理?引言:数据权限和用户管理是数据库管理中非常重要的环节。在MySQL数据库中,通过SQL语句可以方便地进行数据权限的控制和用户管理。本文将详细介绍如何使用SQL语句在MySQL中进行数据
如何使用SQL语句在MySQL中进行数据权限和用户管理?
2023-12-17

编程热搜

目录