• ADADADADAD

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

    mysql数据库 时间:2024-12-25 09:55:50

    作者:文/会员上传

    简介:

    mysql用户管理创建用户并授权指定登录ip使用root用户登录录创建授权新用户:mysql> grant all on.to 'user1'@'127.0.0.1' identified by '123456';//

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    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>grantSELECT,UPDATE,INSERTondb1.*to'user2'@'192.168.159.132'identifiedby'123456';//创建user2用户,并授权其针对db1库中的所有表有SELECT,UPDATE,INSERT权限。//user2用户仅能通过ip192.168.159.132登录。QueryOK,0rowsaffected(0.00sec)

    查看用户授权信息:
    mysql>showgrants;//查看当前用户的授权信息mysql>showgrantsforuser1@127.0.0.1;//查看指定用户的授权信息

    更改授权

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

    查看user2具有哪些权限:mysql>showgrantsforuser2@'192.168.159.132';+--------------------------------------------------------------------------------------------------------------------+|Grantsforuser2@192.168.159.132|+--------------------------------------------------------------------------------------------------------------------+|GRANTUSAGEON*.*TO'user2'@'192.168.159.132'IDENTIFIEDBYPASSWORD'*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'||GRANTSELECT,INSERT,UPDATEON`db1`.*TO'user2'@'192.168.159.132'+--------------------------------------------------------------------------------------------------------------------+2rowsinset(0.00sec)执行user2的授权命令://将ip改成192.168.159.133mysql>GRANTUSAGEON*.*TO'user2'@'192.168.159.132'IDENTIFIEDBYPASSWORD'*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'mysql>GRANTSELECT,INSERT,UPDATEON`db1`.*TO'user2'@'192.168.159.132';查看user2@192.168.159.133的授权:mysql>showgrantsforuser2@'192.168.159.133';+--------------------------------------------------------------------------------------------------------------------+|Grantsforuser2@192.168.159.133|+--------------------------------------------------------------------------------------------------------------------+|GRANTUSAGEON*.*TO'user2'@'192.168.159.133'IDENTIFIEDBYPASSWORD'*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'||GRANTSELECT,INSERT,UPDATEON`db1`.*TO'user2'@'192.168.159.133'+--------------------------------------------------------------------------------------------------------------------+2rowsinset(0.00sec)//授权成功后,user3用户就可以在192.168.159.133对db1进行操作。(如不能远程链接,检查以下防火墙规则。)//user2在两个ip上登录使用的是用一个密码。//重新授权时,权限行的内容和操作的库表能修改。

    常用sql语句
    先用mysql用户登录mysqlmysql>usedb1;//切换到db1库Databasechangedmysql>showtables;//查看当前库中有哪些表。+---------------+|Tables_in_db1|+---------------+|t1|+---------------+1rowinset(0.00sec)mysql>selectcount(*)frommysql.user;//查看mysql库中的user表有几行+----------+|count(*)|+----------+|15|+----------+1rowinset(0.00sec)mysql>select*frommysql.db\G;//查看mysql库的db表中的所有内容//*表示所有内容,\G是为了让输出内容整齐***************************1.row***************************Host:%Db:testUser:Select_priv:YInsert_priv:YUpdate_priv:YDelete_priv:YCreate_priv:YDrop_priv:YGrant_priv:NReferences_priv:YIndex_priv:YAlter_priv:YCreate_tmp_table_priv:YLock_tables_priv:YCreate_view_priv:YShow_view_priv:YCreate_routine_priv:YAlter_routine_priv:NExecute_priv:NEvent_priv:YTrigger_priv:Y......//这种操作平时尽量不要用,内容多的情况下select*会比较占资源。mysql>selectdbfrommysql.db;//查看db这个字段,在mysql库的db表中+---------+|db|+---------+|test||test\_%||db1||db1||db1||db1||db1||db1|+---------+8rowsinset(0.00sec)mysql>selectdb,userfrommysql.db;//查看db和user字段,在mysql库的db表中//需要查看的字段之间用逗号隔开+---------+-------+|db|user|+---------+-------+|test|||test\_%|||db1|user2||db1|user3||db1|user4||db1|user2||db1|user3||db1|user2|+---------+-------+8rowsinset(0.00sec)mysql>select*frommysql.dbwherehostlike'192.168.%'\G;//查看所有IP匹配192.168.%的内容,从mysql库的db表中//like匹配,***************************1.row***************************Host:192.168.159.131Db:db1User:user2Select_priv:YInsert_priv:YUpdate_priv:YDelete_priv:NCreate_priv:NDrop_priv:NGrant_priv:NReferences_priv:NIndex_priv:NAlter_priv:NCreate_tmp_table_priv:NLock_tables_priv:NCreate_view_priv:NShow_view_priv:NCreate_routine_priv:NAlter_routine_priv:NExecute_priv:NEvent_priv:NTrigger_priv:N......mysql>createtablet1(`id`int(4),`name`char(40));//在db1库下创建表ti//有id和name两个字段QueryOK,0rowsaffected(0.39sec)mysql>insertintodb1.t1values(1,'abc');//向t1表中添加一行数据QueryOK,1rowaffected(0.00sec)mysql>select*fromdb1.t1;//查看t1表中的内容+------+------+|id|name|+------+------+|1|abc|+------+------+1rowinset(0.00sec)//添加数据时,字符串尽量加单引号。mysql>updatedb1.t1setname='aaa'whereid=1;//更新表中id为1的那一行name的内容。QueryOK,1rowaffected(0.00sec)Rowsmatched:1Changed:1Warnings:0mysql>select*fromdb1.t1;+------+------+|id|name|+------+------+|1|aaa|+------+------+1rowinset(0.00sec)mysql>deletefromdb1.t1whereid=1;//删除表中id为1那一行的内容QueryOK,1rowaffected(0.00sec)mysql>select*fromdb1.t1;Emptyset(0.00sec)mysql>truncatedb1.t1;//清空表中的内容,表结构还在QueryOK,0rowsaffected(0.09sec)mysql>droptablet1;//删除表,整个表都删除,包括内容和表结构QueryOK,0rowsaffected(0.04sec)mysql>dropdatabasedb1;//删除库,整个库都删除,包括表QueryOK,0rowsaffected(0.13sec)//平时尽量少用truncate和drop。mysql>usemysql;mysql>deletefromuserwhereUser='user1'andHost='127.0.0.1';//删除用户,在删除用户前需先指定用户表QueryOK,1rowaffected(0.06sec)

    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备份还可以,备份量大不适用。

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

    将本文的Word文档下载到电脑

    推荐度:

    下载