zoukankan      html  css  js  c++  java
  • 史上最简单MySQL教程详解(基础篇)之库操作和用户管理

    创建数据库和表

    创建数据库

    通常一个数据库的服务器下会有很多的数据库,每个数据库对应的都是单独的一个项目。所以当我们成功登陆MySQL服务器以后,我们可以通过【show】命令来查看数据库列表,语法如下:

    SHOW DATABASES;

    例如,运行结果如图:

    mysql> show databases;
    +——————–+
    | Database |
    +——————–+
    | information_schema |
    | mysql |
    | performance_schema |
    | sys |
    +——————–+
    4 rows in set (0.00 sec)

    注意事项:

    • SQL命令本身是不区分大小的,这一点不仅仅局限于MySQL数据库,大多数数据库中都是如此;
    • 表简介:
      • 【mysql】:数据中的user表通常管理着数据库的用户信息;
      • 【information_schema】:数据库又称为信息架构库,管理者从表开始的数据库的组成信息,以及用户管理信息的检索的专用数据库;
      • 【performance_schema】,主要用于收集数据库服务器性能参数(MySQL5.6以前是默认关闭的,需要手动开启);
      • 【sys】:【performance_schema】提供监控策略及大量监控项,包括:元数据锁、进度跟踪、事务、内存使用及存储程序等。但是【performance_schema】又过于复杂,操作不便,所以5.7新增了【sys】,基础数据来自于 【performance_schema 】跟 【information_shcema】两个库,本身数据库不存储及集采数据。

    确认这些数据库的内容,可以以掌握现在数据库的状态。所以大家在建表的时候切记不可建在这几个数据库中;

    创建数据库

    我们开始使用【create】创建一个数据库,语法如下:

    CREATE DATABASE 数据库名;

    例如创建一个数据库名为【test】的数据库,运行结果如图:

    mysql> create database test;
    Query OK, 1 row affected (0.00 sec)
    mysql> show databases;
    +——————–+
    | Database |
    +——————–+
    | information_schema |
    | mysql |
    | performance_schema |
    | sys |
    | test |
    +——————–+
    5 rows in set (0.00 sec)

    我们创建成功后再使用查看数据的命令,可以看到名字为【test】的数据库已经创建成功了
    注意事项:

    • 【Query OK, 1 row affected】表示“创建成功,一行受影响,耗时xx秒”;
    • 如果创建失败,请查看自己是否忘记了终止符【;】,在MySQL监视器中,输入任何一句命令,都是需要终止符来作为结束。如果忘记输入了终止符,按下回车键【Enter】后,会在下一行继续显示【mysql>】让你输入,这时再重新输入终止符即可。我在这里示范一个忘记输入终止符的例子,运行结果如下:

      mysql> create database home
      -> ;
      Query OK, 1 row affected (0.00 sec)
      mysql> show databases
      -> ;
      +——————–+
      | Database |
      +——————–+
      | information_schema |
      | home |
      | mysql |
      | performance_schema |
      | sys |
      | test |
      +——————–+
      6 rows in set (0.00 sec)

    • 如果出现了【You have an error in your SQL syntax】就表示你的SQL命令出现了语法问题,请重新确认后再次输入即可;

    • 如果显示了【Can’t create database ‘test’;database exists】就表示“名为【test】的数据库已经存在了,不可以重复创建”,换一个数据库名创建即可;
    • 另外需要注意的是,在Windows和Linux中对数据库名和表名的处理是不同的。在WIndow环境中,是不区分大小写的;而在Linux环境中是严格区分大小的;例如表【TEST】和【test】在Window环境中是作为一个表处理,然而在Linux环境中则是两个完全独立的表。此外,大家在创建数据库,表,列名时,养成良好的习惯,尽量避免不要使用中文,否则容易出现未知的错误;

    删除数据库

    我们通过【drop】命令来删除数据库,语法如下

    DROP DATABASE 数据库名;

    例如,删除我们刚刚创建的名为【home】的数据库,运行结果如下:

    mysql> drop database home;
    Query OK, 0 rows affected (0.03 sec)
    mysql> show databases;
    +——————–+
    | Database |
    +——————–+
    | information_schema |
    | mysql |
    | performance_schema |
    | sys |
    | test |
    +——————–+
    5 rows in set (0.00 sec)

    可以看出,我们已经成功删除了名字为【home】的数据库;

    用户管理

    创建操作数据的专用用户

    创建好数据库后,可以通过管理者(root)登录数据库进行各种操作,但是从安全等各个角度来说,这都不是一个好的方式。所以,我们可以在创建好数据库以后,创建属于这个数据库的专用用户,语法如下:

    GRANT ALL PRIVILEGES ON 数据库名.数据表名TO 用户名@主机IP IDENTIFIED BY 密码

    然后我们需要刷新一下权限

    flush privileges;

    例如:

    mysql> GRANT ALL PRIVILEGES ON test.*TO user@localhost IDENTIFIED BY “123456”;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    这里就为我们【本地(localhost)】的名为【test】的数据库创建了一个名为【uesr】的用户,它具有对该数据库下的所有表【*】进行操作的【全部权限( ALL PRIVILEGES)】,并设置它的登录密码为【123456】。

    注意事项:

    • 因为这次是作为示范,所以我们赋予了【user】用户对于数据库的全部操作权限【ALL PRIVILEGES】,但是在实际的开发中,我们应该根据实际情况赋予用户对应的权限,具体的有【CREATE(创建)】,【SELECT(查询)】,【UPDATE(更新)】,【DELETE(删除)】等权限。同样,操作的范围也应该像操作权限一样赋予最小范围的权限,而不是数据库下的所有表【*】;
    • 如果提示【You have an error in your SQL syntax】请检查自己的SQL语句是否正确书写,着重注意密码是否加上【”“】

    查看用户

    查询用户主要使用的是【SELECT】命令,这个命令在后面会有详细的解释,这里就不再过多的解释,大家先做个了解即可。运行结果如图:

    mysql> select user,host from mysql.user;
    +—————+———–+
    | user | host |
    +—————+———–+
    | mysql.session | localhost |
    | mysql.sys | localhost |
    | root | localhost |
    | user | localhost |
    +—————+———–+
    4 rows in set (0.00 sec)
    就可以看到我们刚才加入的用户信息了;

    查看用户权限

    通过【SHOW】命令来查看用户的权限,语法如下

     SHOW GRANTS FOR 用户名@主机IP;

    运行结果如果:

    mysql> SHOW GRANTS FOR user@localhost;
    +——————————————————–+
    | Grants for user@localhost |
    +——————————————————–+
    | GRANT USAGE ON . TO ‘user’@’localhost’ |
    | GRANT ALL PRIVILEGES ON test.* TO ‘user’@’localhost’ |
    +——————————————————–+
    2 rows in set (0.00 sec)

    注意事项:

    • 如果提示错误【 There is no such grant defined for user ‘user’ on host ‘%’】那就是你再输入命令的时候,并没有指定主机IP造成的,所以补上即可。因为如果不填写,默认的地址为任意地址【%】;

    查看当前用户

    这个命令可以用来当报错【ERROR 1045 (28000): Access denied for user 】的时候用来检查时候用。命令如下:

     select user();

    mysql> select user();
    +—————-+
    | user() |
    +—————-+
    | root@localhost |
    +—————-+
    1 row in set (0.00 sec)

    修改用户名

    我们提供【RENAME】命令来修改用户的名字和主机IP,语法如下:

    RENAME USER 需要修改的用户名@目前的主机IP to 修改后的用户名@修改后的主机IP;

    操作结果如下:

    mysql> select host,user from mysql.user;
    +———–+—————+
    | host | user |
    +———–+—————+
    | localhost | mysql.session |
    | localhost | mysql.sys |
    | localhost | root |
    | localhost | test |
    | localhost | user |
    +———–+—————+
    5 rows in set (0.00 sec)
    mysql> RENAME USER user@localhost to user_2;
    Query OK, 0 rows affected (0.00 sec)
    mysql> select host,user from mysql.user;
    +———–+—————+
    | host | user |
    +———–+—————+
    | % | user_2 |
    | localhost | mysql.session |
    | localhost | mysql.sys |
    | localhost | root |
    | localhost | test |
    +———–+—————+
    5 rows in set (0.00 sec)
    mysql> RENAME USER test@localhost to test_2@localhost;
    Query OK, 0 rows affected (0.00 sec)
    mysql> select host,user from mysql.user;
    +———–+—————+
    | host | user |
    +———–+—————+
    | % | user_2 |
    | localhost | mysql.session |
    | localhost | mysql.sys |
    | localhost | root |
    | localhost | test_2 |
    +———–+—————+
    5 rows in set (0.00 sec)

    注意事项:
    + 如果提示【ERROR 1396 (HY000): Operation RENAME USER failed for ‘user’@’localhost’】请确认需要修改的用户名是否存在
    + 如果提示【ERROR 1396 (HY000): Operation RENAME USER failed for ‘user’@’%’】请确认自己是否输入了主机IP,否则MySQL会默认为【%】

    删除用户

    这里我们依然采用的是【DROP】命令来实现,语法如下:

    DROP USER 需要删除的用户名@主机IP;

    运行结果:

    mysql> select host,user from mysql.user;
    +———–+—————+
    | host | user |
    +———–+—————+
    | % | user_2 |
    | localhost | mysql.session |
    | localhost | mysql.sys |
    | localhost | root |
    | localhost | test_2 |
    +———–+—————+
    5 rows in set (0.00 sec)
    mysql> drop USER test_2@localhost;
    Query OK, 0 rows affected (0.00 sec)
    mysql> select host,user from mysql.user;
    +———–+—————+
    | host | user |
    +———–+—————+
    | % | user_2 |
    | localhost | mysql.session |
    | localhost | mysql.sys |
    | localhost | root |
    +———–+—————+
    4 rows in set (0.00 sec)

    到此,我们就完成了一些对于数据库和用户的操作,接下来,我们将讲解史上最简单MySQL教程详解(基础篇)之表操作(一)。同时这里向大家拓展一个知识点,那就是主机IP指的是该用户只能在对应的主机IP上进行登录。例如:user这个用你设置的主机IP为localhost,那么其他人就将无法从本地以外的地方使用user用户进行登录。

  • 相关阅读:
    sql server 2016新特性 查询存储(Query Store)的性能影响
    Spring 事务管理详情介绍
    python爬虫之快速对js内容进行破解
    python爬虫的一个常见简单js反爬
    温习pycharm
    宋朝官员分析随堂理解笔记
    K-Means改进模式
    jupyter 饼图
    WebDriver常用的API使用详解
    从浏览器启动开始
  • 原文地址:https://www.cnblogs.com/newtol/p/10159113.html
Copyright © 2011-2022 走看看