• Mysql经常使用基本命令汇总及默认账户权限与改动


    一直仅仅是在浅显利用数据库存储数据。也被windows惯坏了。非常多命令使用的时候记不起来。so,换LINUX系统!不再使用GUI管理数据库!也想深入学习下Mysql。从权限管理開始。也就诞生了这篇学习笔记。

    改动默认password

    Mysql新安装时默认rootpassword为空,极不安全!

    建议安装过后立即就改动。

    附改动方法:

    mysqladmin -u root -p password

    接下来按提示输入新password就可以!

    命令具体解释:

    mysqladmin -u root -p[oldpass] password newpass
    注意oldpass可选。假设root默认password为空,则不须要输入,假设须要更改前password,请注意前password与-p之间不要有空格,否则会报错,另外password和newpass之间以空格分隔。这当然是废话。给刚開始学习的人看的!

    基本命令

    登录进入数据库

    这个非常easy:

    mysql -u root -p
    你将会看到下面命令提示符。表明正确进入了

    mysql> 

    能够输入help查看帮助信息。记得全部命令加上“;”这是语法规定。

    命令解释:

    mysql [-u username] [-h host] [-p[password]] [dbname] 

    假设不输入password,回车后会出现Enter password的提示。假设root密码为空。也不须要输入password,出现Enter password提示后回车就可以。

    【能够在登录时指定host名以及数据库名。这个host是你远程登陆别人数据库时对方的地址!】

    附加一条链接给那些password改了忘记的人: windows下mysql忘记rootpassword的解决的方法

    查看数据库

    首先肯定是查看默认数据库了,使用命令:

    mysql> show databases;
    结果为:

    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    +--------------------+
    

    使用数据库

    想使用某个数据库比如mysql这个数据库。使用use命令:

    mysql> use mysql;
    
    结果提示数据库改变了表示正确执行。

    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    

    库表基本操作

    查看库中的表

    进入数据库了,接下来查看表,还是show命令:

    mysql> show tables;

    下面为结果:

    +---------------------------+
    | Tables_in_mysql           |
    +---------------------------+
    | columns_priv              |
    | db                        |
    | event                     |
    | func                      |
    | general_log               |
    | help_category             |
    | help_keyword              |
    | help_relation             |
    | help_topic                |
    | host                      |
    | ndb_binlog_index          |
    | plugin                    |
    | proc                      |
    | procs_priv                |
    | proxies_priv              |
    | servers                   |
    | slow_log                  |
    | tables_priv               |
    | time_zone                 |
    | time_zone_leap_second     |
    | time_zone_name            |
    | time_zone_transition      |
    | time_zone_transition_type |
    | user                      |
    +---------------------------+
    24 rows in set (0.00 sec)
    
    好了。我们已经学会了一些简单的数据库操作,接下来我们開始创建自己的数据库,数据表!

    创建数据库

    简单命令:

    create database mydata;
    结果为:

    Query OK, 1 row affected (0.00 sec)
    
    提示已经成功。

    接下来我们用查看表命令,show:

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mydata             |
    | mysql              |
    | performance_schema |
    +--------------------+
    5 rows in set (0.00 sec)
    好了,自己的数据库创建成功,先看看数据库里都有啥?答案肯定是什么都没有。我们查看一下:

    mysql> use mydata;
    Database changed
    mysql> show tables;
    Empty set (0.00 sec)
    

    创建表

    So。接下来创建一个简单的表(注意我们上面已经使用了mydada数据库。接下来创建的表在这个数据库里,我们仅仅能在数据库里创建表):

    mysql> create table table_name(name VARCHAR(20), age int);
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> show tables;
    +------------------+
    | Tables_in_mydata |
    +------------------+
    | table_name       |
    +------------------+
    1 row in set (0.00 sec)
    

    查看表的结构

    成功之后,我们查看表的结构(使用describe):

    mysql> describe table_name;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | name  | varchar(20) | YES  |     | NULL    |       |
    | age   | int(11)     | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    

    插入数据到表

    这时候表里面是没有数据的。插入数据(insert into):【说明:这里仅仅是简单展示,很多其它具体命令请看官网文档(3000+页)】

    mysql> insert into table_name values("The_Third_Wave", 100);
    Query OK, 1 row affected (0.02 sec)
    
    mysql> select * from table_name;
    +----------------+------+
    | name           | age  |
    +----------------+------+
    | The_Third_Wave |  100 |
    +----------------+------+
    1 row in set (0.00 sec)
    

    更新表中数据

    mysql> update table_name set age=188 where name="The_Third_Wave";
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select * from table_name;
    +----------------+------+
    | name           | age  |
    +----------------+------+
    | The_Third_Wave |  188 |
    +----------------+------+
    1 row in set (0.00 sec)
    
    mysql> 
    

    导入导出数据表

    【更新于:2014.07.22

    导出数据库:

    mysqldump -u username -p 数据库名 > 导出的文件名称

    <span style="color:#000000;">mysqldump -u root -p sns_pa > C:UsersadminDesktopsns_pa.sql</span>

    导入数据库:

    1、进入数据库;

    2、选择导入的数据库。

    2、使用source sns_pa.sql命令。


    清空表(delete)

    mysql> delete from table_name;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from table_name;
    Empty set (0.00 sec)
    

    删除数据库或表(drop)

    mysql> drop table table_name;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show tables;
    Empty set (0.00 sec)
    
    mysql> drop database mydata;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    +--------------------+
    4 rows in set (0.00 sec)
    

    权限管理

    下面是安装后默认用户组:

    mysql> use mysql;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> select Host,User,Password from user;
    +-----------------------------+------------------+-------------------------------------------+
    | Host                        | User             | Password                                  |
    +-----------------------------+------------------+-------------------------------------------+
    | localhost                   | root             | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
    | xxxxxxxxxxxxxxxxxxxxxxxxxxx | root             |                                           |
    | 127.0.0.1                   | root             |                                           |
    | ::1                         | root             |                                           |
    | localhost                   | debian-sys-maint | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
    +-----------------------------+------------------+-------------------------------------------+
    5 rows in set (0.00 sec)
    

    这里面中间三个host相应的root账户password为空。【备注:不同版本号的Mysql不一样,有些都会同一时候设置password,不会像上面一样。】

    看来我们前面仅仅设置了Host:localhost相应的root账号的password,我们使用mysql> select current_user();查看下当前登录的username:

    mysql> select current_user();
    +----------------+
    | current_user() |
    +----------------+
    | root@localhost |
    +----------------+
    1 row in set (0.00 sec)
    
    注意user_name@host_name 这个user_name是username称, host_name是你选择连接到server的客户机的地址。而你在使用mysql -h host_name 这个host_name说的是server地址(上面有说明,注意差别)。

    也就是说:比方你有一个msyql数据库在 db.csdn.com 。 那你就mysql -u root -h db.csdn.com ,这和你自己的机器一点关系都没有,你的登录账号还是 root@yourPCname

    这个可能不好理解。举个样例并练习下创建用户操作。

    创建新用户并指定某个IP能够建立连接

    实际我的操作是在我的试验机上数据中创建远程訪问用户账号(原因是:本机安全第一,我可不想单独还去设置下防火墙,而我的试验机没有防火墙!),目的是提供远程主机(我所用的电脑)訪问本机(我的试验机)数据库的权限。【这句话有点绕】。由于默认账号是不能够非本机登录訪问的。我用默认root账号连接到我的试验机会报下面错误:

    mysql -u root -h 我的试验机IP地址 -p
    Enter password: 
    ERROR 1045 (28000): Access denied for user 'root'@'这里是我的本机IP地址' (using password: YES)
    

    这样能够理解上面那段话吧?

    接下来学习下用户权限设置,下面内容參考的是:MYSQL数据库管理之权限管理----飞鸿无痕

    命令具体解释例如以下:

    GRANT命令使用说明

    先来看一个样例,创建一个仅仅同意从本地登录的超级用户feihong,并同意将权限赋予别的用户,password为test@feihong.111

    GRANT ALL PRIVILEGES ON *.* TO feihong@'localhost' IDENTIFIED BY'test@feihong.111' WITH GRANT OPTION;

    GRANT命令说明:

    ALL PRIVILEGES 是表示全部权限,你也能够使用select、update等权限提到的权限。

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

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

    TO 表示将权限赋予某个用户。

    feihong@'localhost' 表示feihong用户,@后面接限制的主机,能够是IP、IP段、域名以及%,%表示不论什么地方。注意:这里%有的版本号不包含本地,曾经碰到过给某个用户设置了%同意不论什么地方登录。可是在本地登录不了,这个和版本号有关系。遇到这个问题再加一个localhost的用户就能够了。

    IDENTIFIED BY 指定用户的登录password。

    WITH GRANT OPTION 这个选项表示该用户能够将自己拥有的权限授权给别人。

    注意:常常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。

    备注:能够使用GRANT反复给用户加入权限,权限叠加,比方你先给用户加入了一个select权限,然后又给用户加入了一个insert权限。那么该用户就同一时候拥有了select和insert权限。

    下面都在我的是实验机上操作!


    mysql> GRANT USAGE,SELECT ON *.* TO public@'我的本机IP地址' IDENTIFIED BY 'pbpass' WITH GRANT OPTION;
    Query OK, 0 rows affected (0.00 sec)
    
    在我的试验机使用下面命令能够查看用户表:

    select Host,User,Password from mysql.user;
    确定加入正确后我能够在本机远程登陆试验机啦!


    下面在本机操作!

    我们再次尝试远程连接我的试验机数据库,使用我们在试验机上加入的訪问账号去连接!

    <span style="color:#000000;">mysql -u public -h 我的试验机IP地址 -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 9
    Server version: 5.6.15-enterprise-commercial-advanced MySQL Enterprise Server - Advanced Edition (Commercial)
    
    Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql></span> 
    成功登陆我的实验室数据库,接下来的操作取决于你的权限。比如我创建的public账号仅仅有訪问权限,则这个账号就不能创建删除了!

    我们查看下我的试验机有哪些用户:

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sakila             |
    | test               |
    | world              |
    +--------------------+
    7 rows in set (0.00 sec)
    
    mysql> select Host,User,Password from mysql.user;
    +-----------------+--------+-------------------------------------------+
    | Host            | User   | Password                                  |
    +-----------------+--------+-------------------------------------------+
    | localhost       | root   | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
    | 127.0.0.1       | root   | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
    | ::1             | root   | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
    | 本机IP地址    | public | *5067452449A119B7FA902EEDF47385AF750C6297 |
    +-----------------+--------+-------------------------------------------+
    5 rows in set (0.00 sec)
    
    mysql> 
    
    假设你也是pbpass这个password,你会发现共同点。So,安全非常重要,数据库用户权限非常重要,这提醒我们,mysql这种特殊表。不要给其它不论什么人看到!

    安全为本。So,删除哪些不须要的用户吧,等以后须要再加入不迟!

    删除用户

    注意删除用户不要使用DELETE直接删除,由于使用DELETE删除后用户的权限并未删除。新建同名用户后又会继承曾经的权限。正确的做法是使用DROP USER命令删除用户!

    drop user 'public'@我的本机IP地址;
    Query OK, 0 rows affected (0.00 sec)
    
    表示成功,能够再次查看。

    更新用户password

    其它的用户要不设置password。要不删除。怎么设置password呢?

    方法一:mysqladmin

    开头已经说了一种方法。即使用下面命令:

    mysqladmin -u root -p[oldpass] password newpass

    方法二:使用表更新命令

    mysql> UPDATE mysql.user SET Password=PASSWORD('新password') WHERE User='root' and Host='127.0.0.1';
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> FLUSH PRIVILEGES;
    须要注意一定要使用PASSWORD()函数!要不什么后果自己想。

    方法三:set password

    mysql> set password for 'root'@'::1'=PASSWORD('新password');
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> 
    
    备注:更新完成使用FLUSH PRIVILEGES;命令刷新权限。否则还是原来的password!

    本文由@The_Third_Wave(Blog地址:http://blog.csdn.net/zhanh1218)原创。

    还有未涉及的。会不定期更新,有错误请指正。

    假设你看到这篇博文时发现不完整,那是我为防止爬虫先公布一半的原因。请看原作者Blog。

    假设这篇博文对您有帮助,为了好的网络环境。不建议转载,建议收藏!

    假设您一定要转载,请带上后缀和本文地址。

  • 相关阅读:
    接口测试1: 常见接口协议介绍
    ERC223 GAS费窃取问题
    HTTP相关知识体系架构
    TCP/IP四层架构对应OSI七层架构图
    老项目移植ILRuntime经验总结
    奇怪的 C 风格继承写法
    P4207 [NOI2005] 月下柠檬树
    P3822 [NOI2017] 整数
    P4604 [WC2017]挑战
    三维凸包
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6734693.html
Copyright © 2020-2023  润新知