Mysql常用基本命令汇总及默认账户权限与修改

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

修改默认密码

Mysql新安装时默认root密码为空,极不安全!建议安装过后马上就修改。附修改方法:

mysqladmin -u root -p password

接下来按提示输入新密码即可!

命令详解:

mysqladmin -u root -p[oldpass] password newpass

注意oldpass可选,如果root默认密码为空,则不需要输入,如果需要更改前密码,请注意前密码与-p之间不要有空格,否则会报错,另外password和newpass之间以空格分隔。这当然是废话,给初学者看的!

基本命令

登录进入数据库

这个很简单:

mysql -u root -p

你将会看到以下命令提示符,表明正确进入了

mysql> 

可以输入help查看帮助信息。记得所有命令加上“;”这是语法规定。

命令解释:

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

如果不输入password,回车后会出现Enter password的提示。如果root密码为空,也不需要输入password,出现Enter password提示后回车即可。

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

附加一条链接给那些密码改了忘记的人: windows下mysql忘记root密码的解决办法

查看数据库

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

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>

导入数据到表

【待补充】

清空表(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账户密码为空。【备注:不同版本的Mysql不一样,有些都会同时设置密码,不会像上面一样。】

看来我们前面只设置了Host:localhost对应的root账号的密码,我们使用mysql> select current_user();查看下当前登录的用户名:

mysql> select current_user();
+----------------+
| current_user() |
+----------------+
| [email protected] |
+----------------+
1 row in set (0.00 sec)

注意[email protected]_name 这个user_name是用户名称, host_name是你选择连接到服务器的客户机的地址。而你在使用mysql -h host_name 这个host_name说的是服务器地址(上面有说明,注意区别)。

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

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

创建新用户并指定某个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,并允许将权限赋予别的用户,密码为[email protected]

GRANT ALL PRIVILEGES ON *.* TO [email protected]‘localhost‘ IDENTIFIED BY‘[email protected]‘ WITH GRANT OPTION;

GRANT命令说明:

ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等权限提到的权限。

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

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

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

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

IDENTIFIED BY 指定用户的登录密码。

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

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

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

mysql> GRANT USAGE,SELECT ON *.* TO [email protected]'我的本机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这个密码,你会发现共同点。So,安全很重要,数据库用户权限很重要,这提醒我们,mysql这样的特殊表,不要给其他任何人看到!

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

删除用户

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

drop user 'public'@我的本机IP地址;
Query OK, 0 rows affected (0.00 sec)

表示成功,可以再次查看。

更新用户密码

其他的用户要不设置密码,要不删除。怎么设置密码呢?

方法一:mysqladmin

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

mysqladmin -u root -p[oldpass] password newpass

方法二:使用表更新命令

mysql> UPDATE mysql.user SET 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('新密码');
Query OK, 0 rows affected (0.00 sec)

mysql>

备注:更新完毕使用FLUSH PRIVILEGES;命令刷新权限,否则还是原来的密码!

本文由@The_Third_Wave(Blog地址:http://blog.csdn.net/zhanh1218)原创。还有未涉及的,会不定期更新,有错误请指正。

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

如果这篇博文对您有帮助,为了好的网络环境,不建议转载,建议收藏!如果您一定要转载,请带上后缀和本文地址。

Mysql常用基本命令汇总及默认账户权限与修改,布布扣,bubuko.com

时间: 2024-12-26 10:44:55

Mysql常用基本命令汇总及默认账户权限与修改的相关文章

7 mysql常用语句汇总

mysqld 常规MySQL服务器mysqld-opt 优化mysql服务器,提供一些功能可以挖掘更好的功能mysqld-max 与mysqld一样,但可以支持更新,更具实验性质的功能(更不稳定) ++安装mysql参见自带的INSTALL-SOURCE文件$ ./configure ?prefix=/app/mysql-5.0.51a ?with-charset=utf8 ?with-extra-charsets=utf8,gb2312,utf8 ++启动/关闭mysql$ path/mysq

MySQL常用语句汇总

一.库操作 1.创建数据库,创建时可以指定字符集和排序规则 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name 2.删除数据库 DROPDATABASE [IF EXISTS] db_name; 3.修改数据库字符集合

linux常用基本命令汇总

1.目录管理命令:(ls.cd.pwd.mkdir.rmdir.tree) ls:查看目录信息 cd:进入某个目录 pwd:查看当前目录路径 mkdir:创建目录 rmdir:删除空目录 tree:查看目录分支树 2.文件管理:(touch.stat.file.type.rm.cp.mv.nano.vim) touch:创建文件 stat:查看文件的具体信息(访问时间,修改时间等) file:查看文件类型 type:查看命令是内部命令还是外部命令 rm:删除文件 cp:复制文件 mv:剪切移动文

Mysql常用函数汇总

一. 聚合函数 1.1 求和函数-----SUM() 求和函数SUM( )用于对数据求和,返回选取结果集中所有值的总和. 语法:SELECT SUM(column_name) FROM table_name 说明:SUM()函数只能作用于数值型数据,即列column_name中的数据必须是数值型的. 1.2 计数函数-----COUNT() COUNT()函数用来计算表中记录的个数或者列中值的个数,计算内容由SELECT语句指定. 使用COUNT函数时,必须指定一个列的名称或者使用星号,星号表示

MySQL常用SQL汇总(持续更新)

自动生成ROWNUN SELECT (@rowNO := @rowNo+1) AS rowno,a.uuid FROM (SELECT * FROM h_log_proc) a,(SELECT @rowNO :=0) b 随机取记录 SELECT * FROM (SELECT (@rowNo :[email protected]+1) AS rowno, pwd FROM pur_admininfo, (SELECT @rowNo := 0) b) tmp WHERE rowno=(SELECT

MySQL常用命令汇总及用法

原文地址:http://blog.51cto.com/ygtq666/2114231

mysql常用命令及问题汇总

1.增加了密码后的登录格式如下:    mysql -u root -p 2.修改登录密码 1) mysqladmin -u用户名 -p旧密码 password 新密码       例:mysqladmin -u root password 21century     注:因为开始时root没有密码,所以-p旧密码一项就可以省略了. 2)直接修改user表的root用户口令:    mysql> user mysql;    mysql> update user set pasword=pas

MySQL常用权限操作

MySQL常用权限操作 1.更新密码 (SQL命令控制台执行) UPDATE USER SET PASSWORD=PASSWORD('123456') WHERE USER='ROOT' AND HOST='%'; 或者(SQL命令控制台执行) SET PASSWORD FOR ROOT@LOCALHOST = PASSWORD('123456'); 或者(下面这个shell中执行) mysqladmin -u root -p old_password password new_password

Linux 常用命令汇总

Linux 常用命令汇总 1. 显示日期与时间:date 可修改显示日期格式,如:date +%Y/%m/%d %H:%M à2016/12/25 17:05(%Y:年:%m:月:%d:日:%H:24小时制:%M:分) date –d 参数后可加:today/yesterday/tomorrow 来显示今天.昨天.明天日期 2. 显示日历:cal(默认显示本月月历) cal 2001 可显示2001年整年日历:cal 10 2001 可具体显示某月月历 3.  计算器:bc 4. Tab键:用在