设为首页 收藏本站
查看: 707|回复: 0

[经验分享] linux下mysql基本管理命令

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-29 09:04:44 | 显示全部楼层 |阅读模式
1、MySQL环境
    使用MySQL客户端命令工具"mysql"可以连接并登录到MySql环境,在带有提示符"mysql>"交互式命令环境中进行操作。在该操作环境中,输入的每一条数据库管理命令以分号";"表示结束,可以不区分大小写。<习惯上将SQL语句中的关键字使用大写>

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

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

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

wKiom1SefNvxFzoQAAEWTiL1td4500.jpg

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

接着输入命令:ls | grep mysql
wKioL1SefqiiRMCiAAHDmUpjTtE318.jpg
这样,Packages文件夹中的文件中与mysql有关的安装包就罗列了出来。

先安装mysql 输入:
rpm -ivh mysql-5.1.66-2.el6_3.x86_64.rpm
wKiom1Sef2WA_96AAAEhquBCEoM321.jpg

接着安装mysql-server 输入:
rpm -ivh mysql-server-5.1.66-2.el6_3.x86_64.rpm
wKioL1SegH7zyEZSAAEPeYhQi7g921.jpg
安装时如果发现
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
wKiom1SegH2z1yXtAAGb-51ggJY103.jpg
(补充:有些安装mysql时还会提示缺少DBI组件,解决方和DBD组件一样,先查看rpm版本:
    rpm -qa |grep perl-DB
wKioL1SegoLTsLcVAABoN7Wvm7M873.jpg
    接着输入: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
wKiom1SegsCQQVY4AAE3YmSEubU838.jpg


这样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服务器中的数据库。  
wKioL1SehgiQ6oO4AAB6pIbrcNQ265.jpg

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

    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 数据库。

[iyunv@localhost /]# mysqldump -u root -p auth > mysql-auth.sql
Enter password:
[iyunv@localhost /]# 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 表

[iyunv@localhost /]# mysqldump -u root -p mysql host user > mysql.user-host.sql
Enter password:
[iyunv@localhost /]# 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” 选项进行优化,以加快备份速度。

[iyunv@localhost /]# mysqldump -u root -p --all-databases > mysql-all.sql
Enter password:
[iyunv@localhost /]# 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 导入时可以不指定数据库名。

[iyunv@localhost /]# mysql -u root -p < mysql-all.sql
Enter password:
[iyunv@localhost /]# 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 huiyuan@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

    登陆huiyuan并查看数据

[huiyuan@localhost 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.* admin1@'localhost' identified by '123456';

    授权数据库用户 admin2,允许其从网段 192.168.0.0/24 中访问 MySql 服务器,可以查询 auth 库中的所有表,使用密码“123456” 进行验证。
    mysql>grant select on auth.* to admin2@' 192.168.0.0/24' identified by "123456";

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

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

mysql> show grants for root@localhost;
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------------+
| 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 huiyuan@'localhost';
+----------------------------------------------------------------------------------------------------------------+
| Grants for huiyuan@localhost                                                                                   |
+----------------------------------------------------------------------------------------------------------------+
| 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 huiyuan@localhost;
Query OK, 0 rows affected (0.00 sec)

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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-39508-1-1.html 上篇帖子: 安装MySQL后无法启动服务问题 下篇帖子: mysql高可用方案之HeartBeat+nfs linux mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表