linux下mysql基本管理命令

1、MySQL环境

使用MySQL客户端命令工具"mysql"可以连接并登录到MySql环境,在带有提示符"mysql>"交互式命令环境中进行操作。在该操作环境中,输入的每一条数据库管理命令以分号";"表示结束,可以不区分大小写。<习惯上将SQL语句中的关键字使用大写>

首先,如何安装mysql。我用的是redhat6.4系统(虚拟机),将光盘挂载上,挂载操作:

先打开虚拟机中的操作系统-->虚拟机-->设置,会出现如下操作界面:

按图上的步骤依次操作,确定后再系统中就会打开光盘中的内容。如下:

然后打开Packages文件夹,在文件夹空白处右击,然后选择Open in Terminal 命令行界面,这样操作时为了直接在有安装包的文件中操作,不用再挨个打开文件路径。

接着输入命令:ls | grep mysql

这样,Packages文件夹中的文件中与mysql有关的安装包就罗列了出来。

先安装mysql 输入:

rpm -ivh mysql-5.1.66-2.el6_3.x86_64.rpm

接着安装mysql-server 输入:

rpm -ivh mysql-server-5.1.66-2.el6_3.x86_64.rpm

安装时如果发现

perl-DBD-MySQL is needed by mysql-server-5.1.66-2.el6_3.x86_64

提示,说明要先安装perl-DBD-MySQL,先查看需要安装rpm版本,接着安装

ls | grep perl-DBD-MySQL
rpm -ivh perl-DBD-MySQL-4.013-3.el6.x86_64.rpm

(补充:有些安装mysql时还会提示缺少DBI组件,解决方和DBD组件一样,先查看rpm版本:

rpm -qa |grep perl-DB

接着输入:rpm -ivh perl-DBI-1.609-4.el6.i686

安装完后,就可以装mysql-server了。)

重新安装mysql-server  输入:

rpm -ivh mysql-server-5.1.66-2.el6_3.x86_64.rpm

这样mysql就安装完成了,接着我们还要嘴鸥一些事情:

依次输入:

#mysql_install_db      //初始化服务器中的数据库

#service mysqld restart    //启动数据库服务

#mysqladmin -u root passwd "xxxxxxx"  //设置数据库管理员密码

#mysql -u root -p    //登录数据库

#show databases;    //查看数据库表

2、显示数据库结构:

①查看数据库中的列表信息

SHOW DATABASES 语句;用于查看 MySql 服务器中包含的数据库列表。经初始化后的 MySql 服务器,默认建立了三个数据库: test、 mysql 和 information_schema。

查看mysql服务器中的数据库。

②查看数据库中的数据表信息

SHOW TABLES 语句:用于显示当前数据库中包含的数据表。在显示数据表之前,需要先使用 “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

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                |

| servers                   |

| slow_log                  |

| tables_priv               |

| time_zone                 |

| time_zone_leap_second     |

| time_zone_name            |

| time_zone_transition      |

| time_zone_transition_type |

| user                      |

| users                     |

+---------------------------+

24 rows in set (0.00 sec)

③显示数据表的结构

DESCRIBE 语句:用于显示数据表中列的信息(或者叫表结构),以“ 数据库名表名 ” 作为命令参数。命令格式为:

DESCRIBE [数据库名 .] 表名

当省略数据库名时,则以为是查询当前数据库中的表。

mysql> describe user;

+-----------------------+-----------------------------------+------+-----+---------+-------+

| Field                 | Type                              | Null | Key | Default | Extra |

+-----------------------+-----------------------------------+------+-----+---------+-------+

| Host                  | char(60)                          | NO   | PRI |         |       |

| User                  | char(16)                          | NO   | PRI |         |       |

| Password              | char(41)                          | NO   |     |         |       |

| Select_priv           | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Insert_priv           | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Update_priv           | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Delete_priv           | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Create_priv           | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Drop_priv             | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Reload_priv           | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Shutdown_priv         | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Process_priv          | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| File_priv             | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Grant_priv            | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| References_priv       | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Index_priv            | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Alter_priv            | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Show_db_priv          | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Super_priv            | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Create_tmp_table_priv | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Lock_tables_priv      | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Execute_priv          | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Repl_slave_priv       | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Repl_client_priv      | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Create_view_priv      | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Show_view_priv        | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Create_routine_priv   | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Alter_routine_priv    | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Create_user_priv      | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Event_priv            | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| Trigger_priv          | enum(‘N‘,‘Y‘)                     | NO   |     | N       |       |

| ssl_type              | enum(‘‘,‘ANY‘,‘X509‘,‘SPECIFIED‘) | NO   |     |         |       |

| ssl_cipher            | blob                              | NO   |     | NULL    |       |

| x509_issuer           | blob                              | NO   |     | NULL    |       |

| x509_subject          | blob                              | NO   |     | NULL    |       |

| max_questions         | int(11) unsigned                  | NO   |     | 0       |       |

| max_updates           | int(11) unsigned                  | NO   |     | 0       |       |

| max_connections       | int(11) unsigned                  | NO   |     | 0       |       |

| max_user_connections  | int(11) unsigned                  | NO   |     | 0       |       |

+-----------------------+-----------------------------------+------+-----+---------+-------+

39 rows in set (0.00 sec)

3、数据库的创建于删除

①创建新的数据库

CREATE DATABASE 语句:用于创建一个新的数据库,使用数据库名称作为参数,命令格式: CREATE DATABASE 数据库名

例如,创建一个名为"auth"的新数据库

mysql> create database auth;

Query OK, 1 row affected (0.00 sec)

创建数据库需要足够的权限,一般是root权限。

②创建新的数据表

CREATE TABLE 语句,用于在数据库中创建新的数据表,需要使用数据表名称作为参数。命令格式: CREATE TABLE 表名(字段定义。。。。。。)

在 auth 库中创建一个名为“users” 的表。包含两个字段 user_name、 user_passwd,均为非空字符串值,初始密码设为"123456",其中 user_name 字段被设为关键索引字段( PRIMARY KEY)。

mysql> use auth;

Database changed

mysql> create table users(user_name char(30) not null, user_passwd char(20) not null default ‘123456‘, primary key (user_name));

Query OK, 0 rows affected (0.04 sec)

③删除一个数据表

DROP TABLE 语句:用于在数据库中删除指定的数据表,需要使用数据表名称作为参数。命令格式为:

DROP TABLE [数据库名 .] 表名

例如:删除数据库 auth 中的 users 表

mysql> drop table auth.users;

Query OK, 0 rows affected (0.00 sec)

④删除一个数据库

DROP DATABASE 语句:用于删除指定的数据库,需要使用数据库名称作为参数。命令格式为:

DROP DATABASE 数据库名

删除 auth 数据库

mysql> drop database auth;

Query OK, 0 rows affected (0.00 sec)

4、数据录入与维护

参考上述步骤创建 auth 数据库和 users 表,下面将以此为基础,学习如何使用 INSERT、 SELECT、 UPDATE 和DELETE 语句向数据表总插入、查询、修改及删除数据记录。

①插入新的数据记录

INSERT 语句:用于想数据表中插入新的数据记录。命令格式为:INSERT INTO 表名(字段 1,字段 2,。。。) VALUES(字段 1 的值,字段 2 的值,。。。 )

在 auth 库下的 user 表中插入两个用户 kenan、 xiaolan 的记录,密码分别是“123123” 和“321321” 。

mysql> use auth;

Database changed

mysql> insert into auth.users(user_name,user_passwd) values(‘kenan‘, encrypt(‘123123‘));

Query OK, 1 row affected (0.00 sec)

mysql> insert into auth.users(user_name,user_passwd) values(‘xiaolan‘, encrypt(‘321321‘));

Query OK, 1 row affected (0.00 sec)

②查询数据记录

SELECT 语句:用于从数据表中查找符合条件的数据记录, MySql 数据库支持标准的 SQL 查询语句。命令格式为:SELECT 字段名 1,字段名 2。。。 FROM 表名 WHERE 条件表达式表示所有字段时可以使用通配符“*” , 不指定特定条件时可以省略“WHERE” 部分。

在 auth 库的 users 表中,查看所有的数据记录。

mysql> select * from auth.users;

+-----------+---------------+

| user_name | user_passwd   |

+-----------+---------------+

| kenan     | iZ0EqqkpY13Ok |

| xiaolan   | qbUv3oE267sZI |

+-----------+---------------+

2 rows in set (0.00 sec)

在 auth 库的 user 表中,查询用户名为“zhangsan” 的记录、输出用户名、密码字段。

mysql> select user_name,user_passwd from auth.users where user_name=‘kenan‘;

+-----------+---------------+

| user_name | user_passwd   |

+-----------+---------------+

| kenan     | iZ0EqqkpY13Ok |

+-----------+---------------+

1 row in set (0.00 sec)

③修改数据记录

UPDATE 语句:用于修改、更新数据表中的数据记录。命令格式为:UPDATE 表名 SET 字段名 1=字段值 1[,字段名 2=字段值 2] WHERE 条件表达式

将数据库用户 kenan 的密码更改为“123456” 。

mysql> update auth.users set user_passwd=encrypt(‘123456‘) where user_name=‘kenan‘;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

④删除数据记录

DELETE 语句:用于在数据表中删除指定的数据记录。命令格式为:DELETE FROM 表名 WHERE 条件表达式

在 auth 库的 users 表中,删除 name 字段的值为“kenan” 的数据记录。

mysql> delete from auth.users where user_name=‘kenan‘;

Query OK, 1 row affected (0.00 sec)

5、维护数据库及用户权限

对于许多公司的网络管理员来说,可能并不需要掌握非常复杂的数据库语句(这些工作往往由网站开发人员或者专职的数据库管理员来完成)。然而从服务器本身的运行维护角度来说,掌握必要的数据库维护知识仍然是必不可少的。下面简单介绍如何对 MySql 数据库进行备份或恢复操作,以及关于 MySql 用户的权限管理。

①数据库的备份与恢复

→备份数据库

使用 mysqldump 命令可以将数据库信息导出为 SQL 脚本文件,这样的脚本文件还能在不同版本的 MySql 服务器上使用。例如,当需要升级 MySql 数据库软件的版本时,使用 mysqldump 命令将原有数据库信息导出,直接在更新后的 MySql 服务器中导入即可。

mysqldump 命令可以完成全部数据库、指定数据库、数据表的备份。命令格式为:        mysqldump -u 用户名 -p [密码] [options] [数据库名 ] [表名 ] > /备份路径/备份文件名

备份整个 auth 数据库。

[[email protected] /]# mysqldump -u root -p auth > mysql-auth.sql

Enter password:

[[email protected] /]# ls

bin   dev  home  lost+found  mnt             opt   root  selinux  sys  usr

boot  etc  lib   media       mysql-auth.sql  proc  sbin  srv      tmp  var

备份数据库 mysql 中的 user 表、 host 表

[[email protected] /]# mysqldump -u root -p mysql host user > mysql.user-host.sql

Enter password:

[[email protected] /]# ls

bin   etc   lost+found  mysql-auth.sql       proc  selinux  tmp

boot  home  media       mysql.user-host.sql  root  srv      usr

dev   lib   mnt         opt                  sbin  sys      var

备份 MySql 服务器中的所有数据库的内容(添加“ --all-databases” 选项),当需要备份的信息较多时,可以添加“ --opt” 选项进行优化,以加快备份速度。

[[email protected] /]# mysqldump -u root -p --all-databases > mysql-all.sql

Enter password:

[[email protected] /]# ls

bin   etc   lost+found  mysql-all.sql        opt   sbin     sys  var

boot  home  media       mysql-auth.sql       proc  selinux  tmp

dev   lib   mnt         mysql.user-host.sql  root  srv      usr

→恢复数据库

对于使用 mysqldump 命令导出的备份文件,在需要恢复时可以直接通过 mysql 命令进行导入。使用 mysql 命令导入.sql 脚本文件时;命令格式为:

mysql -u root -p [数据库名 ] < /备份路径、备份文件名

备份文件包括所有的(或多个)数据库信息时,执行 mysql 导入时可以不指定数据库名。

[[email protected] /]# mysql -u root -p < mysql-all.sql

Enter password:

[[email protected] /]# ls

bin   etc   lost+found  mysql-all.sql        opt   sbin     sys  var

boot  home  media       mysql-auth.sql       proc  selinux  tmp

dev   lib   mnt         mysql.user-host.sql  root  srv      usr

备份文件只包含单个数据库或单个数据表时,执行 mysql 导入时需要指定目标数据库的名称。

如 mysql-auth.sql   恢复前需要在数据库中建立好auth数据库,这里就不再演示了。

②用户及权限设置

前面过程中,对 MySql 数据库的大部分操作都是使用 root 账号进行的。由于 root 账号拥有对 MySql 数据库的全部权限,频繁使用 root 账号将给数据库服务带来一定的风险。在实际工作中,通常会建立一些专门的用户,只负责特定的数据库、表的管理和维护,从而将权限限制在一定的范围内。

MySql 数据库用户的权限管理主要包括三个方面:授予权限、查看权限、撤销权限。下面分别介绍:

→授予权限

GRANT 语句是用来创建用户并进行授权的最常用语句。当指定用户名不存在时, GRANT 语句将会创建新的用户 ,否则用于修改用户信息。命令格式为: GRANT 权限列表 ON 数据库名 . 表名 TO 用户名 @来源地址[IDENTIFIED BY ‘ 密码‘]

使用 GRANT 语句时,需要注意的事项如下:

>:权限列表:使用“ALL” 关键字代表全部权限,同时授予多个权限时,以逗号", "分隔,例如“select,insert,update,delete” 。

>:表名:可使用通配符“*” 表示指定数据库中的所有数据表。

>:用户名 @来源地址:用来设置谁能连接,能从哪里连接。用户名不能使用通配符,但使用连续的两个单引号“ ‘’ ” 时表示空字符串,可用于匹配任何用户。来源地址表示连接数据库的客户机地址,可使用 “%”作为通配符,匹配某个域内的所有地址(如: %.benet.com),或使用带掩码标记的网络地址(如:192.168.1.0/24)。

>: IDENTIFIED BY :用于设置用户连接数据库时使用的密码字符串,密码经过加密后存储与 mysql 库的 user表中,省略“IDENTIFIED BY” 部分时,新用户的密码将为空。

授权数据库用户 huiyuan,允许其从本机连接到 MySql 服务器,只能查看 auth 库中的 users 表的内 容,使用密码“123456” 进行验证。

mysql> grant select on auth.users to [email protected]‘localhost‘ identified by ‘123456‘;

Query OK, 0 rows affected (0.00 sec)

登陆huiyuan并查看数据

[[email protected] Desktop]$ mysql -u huiyuan -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 24

Server version: 5.1.66 Source distribution

Copyright (c) 2000, 2012, 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> select * from auth.users;

+-----------+---------------+

| user_name | user_passwd   |

+-----------+---------------+

| xiaolan   | qbUv3oE267sZI |

+-----------+---------------+

1 row in set (0.00 sec)

下面的一些命令可以自己试试:

授权数据库用户 admin1,允许其从本机连接到 MySql 服务器,对 auth 库中的所有表具有完全权限,使用密码"123456"验证。

mysql>grant all on auth.* [email protected]‘localhost‘ identified by ‘123456‘;

授权数据库用户 admin2,允许其从网段 192.168.0.0/24 中访问 MySql 服务器,可以查询 auth 库中的所有表,使用密码“123456” 进行验证。

mysql>grant select on auth.* to [email protected]‘ 192.168.0.0/24‘ identified by "123456";

授权数据库用户 admin3,允许其从 benet.com 域内的任何主机访问 MySql 服务器,对 auth 库下的所有表具有 select、 insert 权限,使用密码"123456"验证。

mysql>grant select,insert on auth.* [email protected]‘%benet.com‘ identified by "123456";

→查看权限

需要查看用户权限时,可直接使用 SELECT 语句对 user、 db、 host、数据表进行查询,也可以使用 SHOW 语句进行查看,后者相对更加简单,命令格式为: SHOW GRANTS FOR 用户名 @域名或 IP

查看数据库用户 root 从服务器本机进行连接时的权限。

mysql> show grants for [email protected];

+----------------------------------------------------------------------------------------------------------------------------------------+

| Grants for [email protected]                                                                                                              |

+----------------------------------------------------------------------------------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘localhost‘ IDENTIFIED BY PASSWORD ‘*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1‘ WITH GRANT OPTION |

+----------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

查看数据库用户 huiyuan 从本地服务器连接时的权限。

mysql> show grants for [email protected]‘localhost‘;

+----------------------------------------------------------------------------------------------------------------+

| Grants for [email protected]                                                                                   |

+----------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO ‘huiyuan‘@‘localhost‘ IDENTIFIED BY PASSWORD ‘*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9‘ |

| GRANT SELECT ON `auth`.`users` TO ‘huiyuan‘@‘localhost‘                                                        |

+----------------------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

→撤销权限

REVOKE 语句:用于撤销指定数据库用户和权限。

命令格式为: REVOKE 权限列表 ON 数据库名 . 表名 FROM 用户名 @域名或 IP

撤销数据用户 xiaoqi 从服务器本地对 auth 数据库 users 表的所有权限。

mysql> revoke all on auth.users from [email protected];

Query OK, 0 rows affected (0.00 sec)

以上都是一些mysql的基础操作,想要熟练应用还是应该多多练习。

时间: 2024-10-19 20:25:24

linux下mysql基本管理命令的相关文章

linux下mysql操作的命令

最近在学习mysql,还是只菜鸟,找到下面篇文章对初学者挺有用的,所以共享下 1.linux下启动mysql的命令:   mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令:   mysqladmin restart /ect/init.d/mysql restart (前面为mysql的安装路径) 3.linux下关闭mysql的命令:   mysqladmin shutdown   /ect/

windows和linux下mysql的重启命令

在 Windows 下: 开始->运行->cmd启动:net start mysql停止:net stop mysql 无重启,必须先停止再启动!!! 在LINUX 下: 启动:/etc/rc.d/init.d/mysqld start停止:/etc/rc.d/init.d/mysqld stop重启:/etc/rc.d/init.d/mysqld restart或启动:/etc/init.d/mysqld start停止:/etc/init.d/mysqld stop重启:/etc/init

linux下rpm软件包管理命令详解

1.linux下软件的基本概念 程序需要用到的重要文件:配置文件,指令,库文件,帮助信息 /etc, /bin, /sbin, /lib,/usr/share/man 1.1.系统启动需用到的程序路径,必须在根文件系统的分区上 /etc, /bin, /sbin, /lib,/usr/share/man 1.2.系统启动后需用到的操作作系统核心功能或必要功能程序路径 /etc,/usr/bin,/usr/sbin/,/usr/lib,/usr/share/man 1.3.用户安装的第三方程序所需

Linux下MySQL基础使用命令

www.mysql.com 官方网站 communlty server 社区版  免费的 显示系统自带的mysql包 yum list | grep mysql 安装mysql: yum install -y mysql-server mysql mysql-devel 看按的版本: rpm -qi mysql-server 初始化: service mysqld start    /restart 设置密码: mysqladmin -u root password '密码' 开机启动: chk

linux下mysql常用的命令

linux下搭建完mysql后,一些常用的数据库命令: 创建库:create database mydatabase; 显示所有数据库列表:show databases; 删除数据库:drop dabatase mydatabase; 制定mydatabase为当前默认数据库:use mydatabase; 创建表:create table custmoers(userid int not null,username varchar(20)not null); 删除表:drop table cu

Linux下mysql数据库常用命令一

生产真实服务器下环境操作: 192.168.24.37192.168.24.37(Server)081119 Last login: Tue Aug 11 15:08:10 2015 from 192.168.24.1 #远程连接数据库 [[email protected] ~]# mysql -u root -h 117.40.239.9 -p    #远程连接数据库 Enter password: Welcome to the MySQL monitor.  Commands end wit

linux下mysql日志管理及mysql备份还原

1.SHOW GLOBAL VARIABLES LIKE '%log%';  显示所有日志相关的选项 2.错误日志:log_error和log_warnings 3.一般查询日志:general_log general_log_file log log_output 4.慢查询日志:long_query_time log_slow_queries={YES|NO} slow_query_log low_query_log_file 5.二进制日志:任何引起或可能引起数据库变化的操作:复制和即时点

linux下mysql Select查询命令

SELECT查询格式: SELECT 字段 FROM 表 WHERE 条件; 例如: SELECT * FROM 表名;           #查询表所有内容 SELECT 字段1,字段2... FROM 表名;       #投影,仅显示指定字段中的内容 SELECT [DISTINCT] * FROM 表名 WHERE 条件; #选择,仅显示符合条件的所有字段部分行内容 SELECT * FROM students; SELECT Name,Age FROM students; SELECT

linux下mysql Insert update delete 事务 用户管理

linux下mysql Insert update delete  事务 用户管理 1.INSERT插入语句格式: INSERT INTO tb_name (字段1, 字段2, ...) VALUES (值1,值2, ...)[,(值1, 值2, ...),...]; INSERT INTO 表名 SET 字段1=值1,字段2=值2,...; INSERT INTO 表名 (字段1,字段2,...) SELECT (字段1,字段2,...) FROM 表名 [WHERE 条件]; 2.REPLA