學(xué)會(huì)使用簡(jiǎn)單的 MySQL 操作

2018-08-12 21:29 更新

學(xué)會(huì)使用簡(jiǎn)單的 MySQL 操作

在前面兩個(gè)章節(jié)中已經(jīng)介紹過MySQL的安裝了,但是光會(huì)安裝還不夠,還需要會(huì)一些基本的相關(guān)操作。當(dāng)然了,關(guān)于MySQL的內(nèi)容也是非常多的,只不過對(duì)于linux系統(tǒng)管理員來講,一些基本的操作已經(jīng)可以應(yīng)付日常的管理工作了,至于更高深的那是DBA(專門管理數(shù)據(jù)庫的技術(shù)人員)的事情了。

更改mysql數(shù)據(jù)庫root的密碼

首次進(jìn)入數(shù)據(jù)庫是不用密碼的

/usr/local/mysql/bin/mysql -u root

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

Your MySQL connection id is 2

Server version: 5.0.86 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

現(xiàn)在已經(jīng)進(jìn)入到了mysql 的操作界面了。退出的話,直接輸入exit即可。

mysql> exit

Bye

先解釋一下上面的命令的含義,-u 用來指定要登錄的用戶,root用戶是mysql自帶的管理員賬戶,默認(rèn)沒有密碼的,那么如何給root用戶設(shè)定密碼?按如下操作:

/usr/local/mysql/bin/mysqladmin -u root password ‘123456’

這樣就可以設(shè)定root用戶的密碼了。其中mysqladmin就是用來設(shè)置密碼的工具,-u 指定用戶,passwod 后跟要定義的密碼,密碼需要用單引號(hào)或者雙引號(hào)括起來。另外你也許發(fā)現(xiàn)了,敲命令時(shí)總在前面加/usr/local/mysql/bin/ 這樣很累。但是直接打mysql 又不能用,這是因?yàn)樵谙到y(tǒng)變量$PATH中沒有/usr/local/mysql/bin/這個(gè)目錄,所以需要這樣操作(如果你的linux可以直接打出mysql這個(gè)命令,則不要做這個(gè)操作):

vim /etc/profile

在最后加入一行:

export PATH=$PATH:/usr/local/mysql/bin/

保存后運(yùn)行

source /etc/profile

設(shè)定完密碼后,再來運(yùn)行最開始進(jìn)入mysql數(shù)據(jù)庫操作界面的命令:

mysql -u root

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

就報(bào)錯(cuò)了,這是因?yàn)閞oot用戶有密碼。

mysql -u root -p

Enter password:

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

Your MySQL connection id is 5

Server version: 5.0.86 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

需要加-p選項(xiàng)指定密碼,這時(shí)就會(huì)提示你輸入密碼了。

當(dāng)設(shè)定密碼后,如果要想更改密碼如何操作呢?

mysqladmin -u root -p password "123456789"

Enter password:

輸入原來root的密碼就可以更改密碼了。

連接數(shù)據(jù)庫

剛剛講過通過使用mysql -u root -p 就可以連接數(shù)據(jù)庫了,但這只是連接的本地的數(shù)據(jù)庫’localhost’,然后有很多時(shí)候都是去連接網(wǎng)絡(luò)中的某一個(gè)主機(jī)上的mysql。

mysql -u user1 -p –P 3306 -h 10.0.2.69

其中-P(大寫)指定遠(yuǎn)程主機(jī)mysql的綁定端口,默認(rèn)都是3306;-h指定遠(yuǎn)程主機(jī)的IP

一些基本的MySQL操作命令

  1. 查詢當(dāng)前所有的庫
mysql> show databases;

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

| Database |

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

| information_schema |

| mysql |

| test |

+--------------------+
  1. 查詢某個(gè)庫的表
mysql> use mysql;

Database changed

mysql> show tables;

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

| Tables_in_mysql |

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

| columns_priv |

| db |

| func |

| help_category |

| help_keyword |

| help_relation |

| help_topic |

| host |

| proc |

| procs_priv |

| tables_priv |

| time_zone |

| time_zone_leap_second |

| time_zone_name |

| time_zone_transition |

| time_zone_transition_type |

| user |

+---------------------------+
  1. 查看某個(gè)表的字段
mysql> desc func; //func 是表名

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

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

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

| name | char(64) | NO | PRI | | |

| ret | tinyint(1) | NO | | 0 | |

| dl | char(128) | NO | | | |

| type | enum('function','aggregate') | NO | | NULL | |

+-------+------------------------------+------+-----+---------+-------+
  1. 查看某個(gè)表的表結(jié)構(gòu)(創(chuàng)建表時(shí)的詳細(xì)結(jié)構(gòu))
mysql> show create table func;

|Table | CreateTable |

| func | CREATE TABLE `func` (

`name` char(64) collate utf8_bin NOT NULL default '',

`ret` tinyint(1) NOT NULL default '0',

`dl` char(128) collate utf8_bin NOT NULL default '',

`type` enum('function','aggregate') character set utf8 NOT NULL,

PRIMARY KEY (`name`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User defined functions' |

+-------+----------------------------------------------------------------------------------------------------------------------
  1. 查看當(dāng)前是哪個(gè)用戶
mysql> select user();

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

| user() |

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

| root@localhost |

+----------------+
  1. 查看當(dāng)前所在數(shù)據(jù)庫
mysql> select database();

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

| database() |

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

| mysql |

+------------+
  1. 創(chuàng)建一個(gè)新庫
mysql> create database db1;

Query OK, 1 row affected (0.04 sec)
  1. 創(chuàng)建一個(gè)表
mysql> create table t1 ( `id` int(4), `name` char(40));

Query OK, 0 rows affected (0.02 sec)

mysql> desc t1;

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

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

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

| id | int(4) | YES | | NULL | |

| name | char(40) | YES | | NULL | |

+-------+----------+------+-----+---------+-------+
  1. 查看當(dāng)前數(shù)據(jù)庫版本
mysql> select version();

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

| version() |

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

| 5.0.86 |

+-----------+
  1. 查看當(dāng)前系統(tǒng)時(shí)間
mysql> select current_date, current_time;

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

| current_date | current_time |

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

| 2011-05-31 | 08:52:50 |

+--------------+--------------+
  1. 查看當(dāng)前mysql的狀態(tài)
mysql> show status;

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

| Variable_name | Value |

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

| Aborted_clients | 0 |

| Aborted_connects | 1 |

| Binlog_cache_disk_use | 0 |

| Binlog_cache_use | 0 |

| Bytes_received | 664 |

| Bytes_sent | 6703 |

這個(gè)命令打出很多東西,顯示你的mysql狀態(tài)。

  1. 查看mysql的參數(shù)

mysql> show variables;

很多參數(shù)都是可以在/etc/my.cnf中定義的。

  1. 創(chuàng)建一個(gè)普通用戶并授權(quán)
mysql> grant all on *.* to user1 identified by '123456';

Query OK, 0 rows affected (0.01 sec)

all 表示所有的權(quán)限(讀、寫、查詢、刪除等等操作),*.*前面的*表示所有的數(shù)據(jù)庫,后面的*表示所有的表,identified by 后面跟密碼,用單引號(hào)括起來。這里的user1指的是localhost上的user1,如果是給網(wǎng)絡(luò)上的其他機(jī)器上的某個(gè)用戶授權(quán)則這樣:

mysql> grant all on db1.* to 'user2'@'10.0.2.100' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

用戶和主機(jī)的IP之間有一個(gè)@,另外主機(jī)IP那里可以用%替代,表示所有主機(jī)。例如:

mysql> grant all on db1.* to 'user3'@'%' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

一些常用的sql

  1. 查詢語句

mysql> select count(*) from mysql.user;

mysql.user表示mysql庫的user表;count(*)表示表中共有多少行。

mysql> select * from mysql.db;

查詢mysql庫的db表中的所有數(shù)據(jù)

mysql> select db from mysql.db;

查詢mysql庫db表的db段。

mysql> select * from mysql.db where host like '10.0.%';

查詢mysql庫db表host字段like 10.0.% 的行,這里的%表示匹配所有,類似于前面介紹的通配符。

  1. 插入一行

mysql> insert into db1.t1 values (1, 'abc');

Query OK, 1 row affected (0.00 sec)

t1表在前面已經(jīng)創(chuàng)建過。

mysql> select * from db1.t1;

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

| id | name |

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

| 1 | abc |

+------+------+
  1. 更改某一行
mysql> update db1.t1 set name='aaa' where id=1;

Query OK, 1 row affected (0.02 sec)

Rows matched: 1 Changed: 1 Warnings: 0

這樣就把原來id為1的那行中的name改成’aaa’

  1. 刪除表
mysql> drop table db1.t1;

Query OK, 0 rows affected (0.01 sec)
  1. 刪除數(shù)據(jù)庫
mysql> drop database db1;

Query OK, 0 rows affected (0.07 sec)
  1. 備份與恢復(fù)庫

mysqldump -uroot -p mysql >mysql.sql

這里的mysqldump 就是備份的工具了,-p后面的mysql指的是mysql庫,把備份的文件重定向到mysql.sql。如果恢復(fù)的話,只要:

mysql -uroot -p mysql < mysql.sql

關(guān)于MySQL的基本操作筆者就介紹這么多,當(dāng)然學(xué)會(huì)了這些還遠(yuǎn)遠(yuǎn)不夠,希望你能夠在你的工作中學(xué)習(xí)到更多的知識(shí),如果你對(duì)MySQL有很大興趣,不妨深入研究一下,畢竟多學(xué)點(diǎn)總沒有壞處。如果想學(xué)跟多的東西請(qǐng)去查看MySQL官方中文參考手冊(cè)(5.1)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)