在前面兩個(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ù)人員)的事情了。
首次進(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的密碼就可以更改密碼了。
剛剛講過通過使用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> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
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 |
+---------------------------+
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 | |
+-------+------------------------------+------+-----+---------+-------+
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' |
+-------+----------------------------------------------------------------------------------------------------------------------
mysql> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
mysql> select database();
+------------+
| database() |
+------------+
| mysql |
+------------+
mysql> create database db1;
Query OK, 1 row affected (0.04 sec)
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 | |
+-------+----------+------+-----+---------+-------+
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.86 |
+-----------+
mysql> select current_date, current_time;
+--------------+--------------+
| current_date | current_time |
+--------------+--------------+
| 2011-05-31 | 08:52:50 |
+--------------+--------------+
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)。
mysql> show variables;
很多參數(shù)都是可以在/etc/my.cnf中定義的。
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)
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.% 的行,這里的%表示匹配所有,類似于前面介紹的通配符。
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 |
+------+------+
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’
mysql> drop table db1.t1;
Query OK, 0 rows affected (0.01 sec)
mysql> drop database db1;
Query OK, 0 rows affected (0.07 sec)
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)。
更多建議: