Mysql 创建数据库及用户

在创建和使用数据库之前,先介绍几个命令:

该SHOW语句查找服务器上当前存在的数据库:

该mysql数据库描述了用户访问权限。该test数据库通常可作为用户工作区尝试的事情了。

mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| world |
±-------------------+
6 rows in set (0.11 sec)

use 命令表示使用指定的 mysql 数据库

mysql> use mysql
Database changed
mysql>
一,创建和选择数据库

1. 创建数据库

mysql> create database menagerie;
Query OK, 1 row affected (0.04 sec)

注意:如果您收到错误,例如ERROR 1044(42000):在尝试创建数据库时,用户’micah’@‘localhost’拒绝访问数据库’menagerie’,这意味着您的用户帐户没有必要的权限。

2. 选择数据库,创建数据库时并不会选择它使用; 你必须明确地说明使用当前数据库,请使用以下语句:

mysql> use menagerie
Database changed

3. 进入数据库同时,选择使用指定数据库

C:\Users\zjy\Desktop $>mysql -uroot -p menagerie
Enter password: ******

4. 执行完3之后,你可以通过 select database(),确认是否已经使用制定数据库

mysql> select database();
±-----------+
| database() |
±-----------+
| menagerie |
±-----------+
1 row in set (0.00 sec)

二,创建表
创建数据库之后,我们可以看看它里面有什么

该menagerie数据库是空的集合

mysql> show tables;
Empty set (0.02 sec)
更难的部分是决定数据库的结构应该是什么:您需要哪些表以及每个表中应该包含哪些列。

您想要一张包含每只宠物记录的表格。这可以称为pet表格,它应该包含每个动物名称的最低限度。因为名称本身不是很有趣,所以该表应包含其他信息。例如,如果您家中有多个人饲养宠物,您可能需要列出每只动物的主人。您可能还想记录一些基本的描述性信息,如物种和性别。

年龄怎么样?这可能是有意义的,但存储在数据库中并不是一件好事。随着时间的推移,年龄会发生变化,这意味着您必须经常更新记录。相反,最好存储固定值,如出生日期。然后,无论何时需要年龄,您都可以将其计算为当前日期和出生日期之间的差异.MySQL提供了进行日期算术的功能,因此这并不困难。存储出生日期而不是年龄也有其他优点:

您可以使用数据库执行任务,例如为即将到来的宠物生日生成提醒(如果您认为这种类型的查询有些愚蠢,请注意,您可能会在业务数据库的上下文中询问相同的问题,以确定您需要在当前一周或一个月内向其发送生日祝福的客户,计算机辅助个人触摸。)

您可以计算与当前日期以外的日期相关的年龄。例如,如果您将死亡日期存储在数据库中,则可以轻松计算宠物死亡时的年龄。

您可能会想到在pet表格中有用的其他类型的信息,但到目前为止确定的信息是足够的:名称,所有者,物种,性别,出生和死亡。

可以使用创建表指定表的布局,对于名称来说,名称,所有者,种三列的值的长度是不尽相同的,我们使用可变长度的字符VARCHAR,的性别性别可以使用单个字符’m’状语从句: ‘f’,或者可能’male’和 ‘female’。最简单的是使用单个字符’m’和’f’;对于birth和death 列使用date数据类型是一个相当明显的选择。

mysql> create table pet (name varchar(20),owner varchar(20),
-> species varchar(20), sex char(1), birth date, death date);
Query OK, 0 rows affected (0.26 sec)
让我们来看看创建表之后的数据库

mysql> show tables;
±--------------------+
| Tables_in_menagerie |
±--------------------+
| pet |
±--------------------+
1 row in set (0.00 sec)
你可能不太满意,我希望看到更详细的表结构,验证表是否按预期方式创建,使用以下描述语句:

mysql> describe pet;
±--------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±--------±------------±-----±----±--------±------+
| name | varchar(20) | YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| species | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| death | date | YES | | NULL | |
±--------±------------±-----±----±--------±------+
6 rows in set (0.00 sec)
如果你忘记了表中列的名称或它们具有的类型,使用可以该 描述 命令。

原文:https://blog.csdn.net/zjy_android_blog/article/details/81460033

三、 创建用户并绑定数据库
(1)登录:mysql -u root -p

(2)查看现有用户(mysql8.0.1)

复制代码
mysql> select host,user,authentication_string from mysql.user;
±----------±-----------------±---------------------------------------------------------------+
| host | user | authentication_string |
±----------±-----------------±---------------------------------------------------------------+
| localhost | mysql.infoschema | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | root | $A 005 005 005e!42 )Tf+4M{4W>MkFY9ktIVPhgVemeQsSQnuiGLRiH/909Zyaj9XF3/3Yk2 |
±----------±-----------------±---------------------------------------------------------------+
复制代码
(3)新建用户

格式:create user “username”@“host” identified by “password”;

eg:

1.mysql->create user ‘test’@‘localhost’ identified by ‘123’;

2.mysql->create user ‘test’@‘192.168.7.22’ identified by ‘123’;

3.mysql->create user ‘test’@’%’ identified by ‘123’;
/host=“localhost"为本地登录用户,host=“ip"为ip地址登录,host=”%”,为外网ip登录/

(4)删除用户

格式:drop user ‘username’@‘host’;

(5)授权

格式:grant privileges on databasename.tablename to ‘username’@‘host’ IDENTIFIED BY ‘PASSWORD’;

1. GRANT命令说明:
     priveleges(权限列表),可以是all priveleges, 表示所有权限,也可以是select、update等权限,多个权限的名词,相互之间用逗号分开。

on用来指定权限针对哪些库和表。

. 中前面的号用来指定数据库名,后面的号用来指定表名。

    to 表示将权限赋予某个用户, 如 jack@'localhost' 表示jack用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是                  在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户就可以了。

identified by指定用户的登录密码,该项可以省略。

         WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。

             备注:可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加一个select权限,然后又给用户添加一个insert权限,那么该用户就同时拥有了select和insert权限。

2.授权原则说明:

权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:

a、只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。

   b、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。

   c、初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。

   d、为每个用户设置满足密码复杂度的密码。

e、定期清理不需要的用户。回收权限或者删除用户。

eg:

复制代码
/授予用户通过外网IP对于该数据库的全部权限/

grant all privileges on test.* to ‘test’@’%’ ;

/授予用户在本地服务器对该数据库的全部权限/

grant all privileges on test.* to ‘test’@‘localhost’;

grant select on test.* to ‘user1’@‘localhost’; /给予查询权限/

grant insert on test.* to ‘user1’@‘localhost’; /添加插入权限/

grant delete on test.* to ‘user1’@‘localhost’; /添加删除权限/

grant update on test.* to ‘user1’@‘localhost’; /添加权限/

flush privileges; /刷新权限/
复制代码
(6)查看权限

复制代码
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)

修改/etc/my.cnf 文件 设置字符集为utf8
character-set-server =utf8

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值