一直仅仅是在浅显利用数据库存储数据。也被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:\Users\admin\Desktop\sns_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。

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

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

Mysql经常使用基本命令汇总及默认账户权限与改动的更多相关文章

  1. 技术福利:mysql数据库的基本命令汇总整理

    一.创建数据库: create database database_name: php中创建数据库的两种方法:(mysql_create_db(),mysql_query()) $conn = mys ...

  2. MySql Binlog 说明 & Canal 集成MySql的更新异常说明 & MySql Binlog 常用命令汇总

    文章来源于本人的印象笔记,如出现格式问题可访问该链接查看原文 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 目录 背景介绍 开启MySq ...

  3. MySQL 5.7以上 root用户默认密码问题【转】

    https://www.yanning.wang/archives/379.html 废话少说一句话系列: CentOS系统用yum安装MySQL的朋友,请使用 grep "temporar ...

  4. (2.2)学习笔记之mysql基础操作(登录及账户权限设置)

    本系列学习笔记主要讲如下几个方面: 本文笔记[三:mysql登录][四:账户权限设置][五:mysql数据库安全配置] 三.mysql登录 常用登录方式如下: 四.账户权限设置 (4.1)查看用户表, ...

  5. MySQL 5.7以上 root用户默认密码问题

    废话少说一句话系列: CentOS系统用yum安装MySQL的朋友,请使用 grep "temporary password" /var/log/mysqld.log 命令,返回结 ...

  6. mysql主主复制汇总整理

    mysql主主复制汇总整理 一.Mysql主主.主从复制主要思路: 1.mysql复制实质: 就是其他的MySQL数据库服务器将这个数据变更的二进制日志在本机上再执行一遍,因此非常重要的一点是mysq ...

  7. mysql基础知识语法汇总整理(二)

    mysql基础知识语法汇总整理(一) insert /*insert*/ insert into 表名(字段列表) values(值列表); --蠕虫复制 (优点:快速复制数据,测试服务器压力) in ...

  8. mysql基础知识语法汇总整理(一)

    mysql基础知识语法汇总整理(二)   连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...

  9. mysql建表设置两个默认CURRENT_TIMESTAMP的技巧

    转载:http://blog.163.com/user_zhaopeng/blog/static/166022708201252323942430/   业务场景: 例如用户表,我们需要建一个字段是创 ...

随机推荐

  1. 定制WinEdt 优化Latex输入

    定制WinEdt 优化Latex输入 ---原文转载地址:http://www.mamicode.com/info-detail-342716.html ---推荐winedt功能定制使用-说明文档: ...

  2. typedef的用法再思考

    最近重读c语法,有所感悟,记录. 有时候感悟,其实就是猜,假想,作者创建语言的想法,通俗的讲就是丹尼斯灵魂附体了,这个时候任何c语言难点对于你来说,就像吃饭喝水一样简单了,同时还能发现它优美动人之处. ...

  3. 利用U盘进行软件加密的方法

    利用U盘进行软件加密的方法 一般的U盘不具备加密的功能,虽然U盘和加密狗外形有一些相似,但是内部完全不一样的,U盘只是一个存储器芯片和简单的附属电路,而现在的智能卡加密狗都具有一个单独的CPU或者加密 ...

  4. linux命令(32):cat

    1.cat 显示文件连接文件内容的工具: cat 是一个文本文件查看和连接工具.查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名. 比如: [root@localhost ~]# c ...

  5. codeBlocks编译undefined reference to错误

    是没有把c文件编译进去的原因. 右键项目,选择属性,弹出窗体 然后选择build targets 在最下面有个build target files:中把c文件勾选.点击ok重新编译即可. Code:: ...

  6. VC2010下Qt5的中文乱码问题

    要搞清楚这个问题,先要弄明白编码.但是编码问题实在太复杂,这里肯定讲不开. 我先找一个例子,比如:“中文” 的 Unicode 码点/UTF8编码/GBK 分别是多少. 先去这个网站,输入 “中文” ...

  7. java timer timertask mark

    其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样: 1 2 3 4 5 6 Timer timer = ...

  8. 成果展示-RSA算法工具

  9. 【JS】通过JS实现超市小票打印功能——ActiveX控件

    应客户的需求= = ,要在网页端实现打印小票的功能 先来一张打印出的小票效果图(合计明显不对,因为有修改订单功能,请各位忽略) 用什么方法实现呢: 我想应该是有三种吧 1.用第三方的浏览器控件(这个好 ...

  10. 函数调用前有"::"符号,什么意思啊?

    struct ifreq ifrf; ::memset(&ifrf,0,sizeof(ifrf)); ::strncpy(ifrf.ifr_name, ifr[addrCount].ifr_n ...