MYSQL經常使用命令收集&&常見錯誤

1、鏈接MYSQL。

格式: mysql -h主機地址 -u用戶名 -p用戶密碼

一、鏈接到本機上的MYSQL。

  首先打開DOS窗口,而後進入目錄mysql\bin,再鍵入命令mysql -u root -p,回車後提示你輸密碼.注意用戶名前能夠有空格也能夠沒有空格,可是密碼前必須沒有空格,不然讓你從新輸入密碼.

  若是剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車便可進入到MYSQL中了,MYSQL的提示符是: mysql>

二、鏈接到遠程主機上的MYSQL。假設遠程主機的IP爲:110.110.110.110,用戶名爲root,密碼爲abcd123。則鍵入如下命令:

   mysql -h110.110.110.110 -u root -p 123;(注:u與root之間能夠不用加空格,其它也同樣)

三、退出MYSQL命令: exit (回車)


2、修改密碼。
  裝好系統的密碼爲空 !  用mysqladmin -u root password 密碼

格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼

一、給root加個密碼ab12。首先在DOS下進入目錄mysql\bin,而後鍵入如下命令

   mysqladmin -u root -password ab12

   注:由於開始時root沒有密碼,因此-p舊密碼一項就能夠省略了。

二、再將root的密碼改成djg345。

   mysqladmin -u root -p ab12 password djg345

3、增長新用戶。
(注意:和上面不一樣,下面的由於是MYSQL環境中的命令,因此後面都帶一個分號做爲命令結束符)

格式:grant select on 數據庫.* to 用戶名@登陸主機 identified by "密碼"

一、增長一個用戶test1密碼爲abc,讓他能夠在任何主機上登陸,並對全部數據庫有查詢、插入、修改、刪除的權限。首先用root用戶連入MYSQL,而後鍵入如下命令:

   grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";

   但增長的用戶是十分危險的,你想如某我的知道test1的密碼,那麼他就能夠在internet上的任何一臺電腦上登陸你的mysql數據庫並對你的數據能夠隨心所欲了,解決辦法見2。

二、增長一個用戶test2密碼爲abc,讓他只能夠在localhost上登陸,並能夠對數據庫mydb進行查詢、插入、修改、刪除的操做(localhost指本地主機,即MYSQL數據庫所在的那臺主機),

   這樣用戶即便用知道test2的密碼,他也沒法從internet上直接訪問數據庫,只能經過MYSQL主機上的web頁來訪問了。

   grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";

   若是你不想test2有密碼,能夠再打一個命令將密碼消掉。

   grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
 

下篇我是MYSQL中有關數據庫方面的操做。注意:你必須首先登陸到MYSQL中,如下操做都是在MYSQL的提示符下進行的,並且每一個命令以分號結束。


1、操做技巧

一、若是你打命令時,回車後發現忘記加分號,你無須重打一遍命令,只要打個分號回車就能夠了。

   也就是說你能夠把一個完整的命令分紅幾行來打,完後用分號做結束標誌就OK。

二、你可使用光標上下鍵調出之前的命令。


2、顯示命令

一、顯示當前數據庫服務器中的數據庫列表:

mysql> SHOW DATABASES;

注意:mysql庫裏面有MYSQL的系統信息,咱們改密碼和新增用戶,實際上就是用這個庫進行操做。

二、顯示數據庫中的數據表:

mysql> USE 庫名; 
mysql> SHOW TABLES;

三、顯示數據表的結構:

mysql> DESCRIBE 表名;

四、創建數據庫:

mysql> CREATE DATABASE 庫名;

五、創建數據表:

mysql> USE 庫名;
mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));

六、刪除數據庫:

mysql> DROP DATABASE 庫名;

七、刪除數據表:

mysql> DROP TABLE 表名;

八、將表中記錄清空:

mysql> DELETE FROM 表名;

九、顯示錶中的記錄:

mysql> SELECT * FROM 表名;

十、往表中插入記錄:

mysql> INSERT INTO 表名 VALUES ("hyq","M");

十一、更新表中數據:

mysql-> UPDATE 表名 SET 字段名1='a',字段名2='b' WHERE 字段名3='c';

十二、用文本方式將數據裝入數據表中:

mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE 表名;

1三、導入.sql文件命令:
 
mysql> USE 數據庫名;
mysql> SOURCE d:/mysql.sql;

1四、命令行修改root密碼:

mysql> UPDATE mysql.user SET password=PASSWORD('新密碼') WHERE User='root';
mysql> FLUSH PRIVILEGES;
注意用此種方法修改密碼時別忘了 password=password('新密碼') 若是直接用 password='新密碼',下次登陸時會出現問題以致於登陸不進去,由於此密碼沒用通過password()函數處理,這樣寫入到user表中的密碼系統不能識別就會顯示用戶名和密碼錯誤的信息。
若是在修改密碼的過程當中出現問題以致於沒有一個用戶能夠進入mysql則能夠用如下的方法從新修改用戶名和密碼:

bin>mysqld --skip-grant-tables;而後再在 另一個bin>mysql 即可直接進入mysql ,進入後便修改相關數據。

1五、顯示use的數據庫名:

mysql> SELECT DATABASE(); 

1六、顯示當前的user:

mysql> SELECT USER(); 

3、一個建庫和建表以及插入數據的實例

drop database if exists school; //若是存在SCHOOL則刪除

create database school; //創建庫SCHOOL

use school; //打開庫SCHOOL

create table teacher //創建表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
); //建表結束

//如下爲插入字段
insert into teacher values('','allen','大連一中','1976-10-10');
insert into teacher values('','jack','大連二中','1975-12-23');

 若是你在mysql提示符鍵入上面的命令也能夠,但不方便調試。

(1)你能夠將以上命令原樣寫入一個文本文件中,假設爲school.sql,而後複製到c:\\下,並在DOS狀態進入目錄\\mysql\\bin,而後鍵入如下命令:

     mysql -uroot -p密碼 < c:\\school.sql

     若是成功,空出一行無任何顯示;若有錯誤,會有提示。(以上命令已經調試,你只要將//的註釋去掉便可使用)。

(2)或者進入命令行後使用 mysql> source c:\\school.sql; 也能夠將school.sql文件導入數據庫中。


4、將文本數據轉到數據庫中

一、文本數據應符合的格式:字段數據之間用tab鍵隔開,null值用\\n來代替.例:

   3 rose 大連二中 1976-10-10

   4 mike 大連一中 1975-12-23

   假設你把這兩組數據存爲school.txt文件,放在c盤根目錄下。

二、數據傳入命令 load data local infile "c:\\school.txt" into table 表名;

   注意:你最好將文件複製到\\mysql\\bin目錄下,而且要先用use命令打表所在的庫。


5、備份數據庫:
(命令在DOS的\\mysql\\bin目錄下執行)

1.導出整個數據庫

  導出文件默認是存在mysql\bin目錄下

  mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名 

  mysqldump -u user_name -p123456 database_name > outfile_name.sql

2.導出一個表

  mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名

  mysqldump -u user_name -p database_name table_name > outfile_name.sql

3.導出一個數據庫結構

  mysqldump -u user_name -p -d --add-drop-table database_name > outfile_name.sql

  -d 沒有數據 --add-drop-table 在每一個create語句以前增長一個drop table

4.帶語言參數導出

php

  mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt database_name > outfile_name.sql mysql

mysql常見錯誤提示及解決方法 
130 :文件格式不正確。(還不是很清楚錯誤的情況)
145 :文件沒法打開。
1005:建立表失敗。
1006:建立數據庫失敗。
1007:數據庫已存在,建立數據庫失敗。
1008:數據庫不存在,刪除數據庫失敗。
1009:不能刪除數據庫文件致使刪除數據庫失敗。
1010:不能刪除數據目錄致使刪除數據庫失敗。
1011:刪除數據庫文件失敗。
1012:不能讀取系統表中的記錄。
1016:文件沒法打開,使用後臺修復或者使用 phpmyadmin 進行修復。
Quote:
開始=>全部程序=>附件=>命令提示符
輸入 mysql 所在硬盤盤符
  cd mysql 所在目錄
  cd bin
輸入 myisamchk -f D:usr/local/mysql/data/bbs/PW_members.MYI
ps : D:usr/local/mysql/data/bbs 是你論壇數據庫的路徑
  -f 根據具體狀況選擇,通常也能夠選擇 -r 
  注意你的 系統C盤或放數據庫的硬盤空間是否足夠,通常小於 1G 很容易出現錯誤。 
或用mysqlcheck命令進行修復。具體的方法:利用命令行進入mysql/bin目錄,執行
mysqlcheck -o -r phpwind -uroot -p                                     
其中phpwind是你數據庫的名稱,root是你的數據庫用戶名,而後會提示你輸入密碼。而後就會修復你的數據庫。
1017:服務器非法關機,致使該文件損壞。
1020:記錄已被其餘用戶修改。
1021:硬盤剩餘空間不足,請加大硬盤可用空間。
1022:關鍵字重複,更改記錄失敗。
1023:關閉時發生錯誤。
1024:讀文件錯誤。
1025:更更名字時發生錯誤。
1026:寫文件錯誤。
1030:多是服務器不穩定。(具體緣由不是很清楚)
1032:記錄不存在。
1036:數據表是隻讀的,不能對它進行修改。
1037:系統內存不足,請重啓數據庫或重啓服務器。
1038:用於排序的內存不足,請增大排序緩衝區。
1040:已到達數據庫的最大鏈接數,請加大數據庫可用鏈接數。
Quote:
在my.ini 修改max_connections=100爲max_connections=1000或更大,重啓mysql
1041:系統內存不足。
1042:無效的主機名。
1043:無效鏈接。
1044:數據庫用戶權限不足,請聯繫空間商解決。
1045:數據庫服務器/數據庫用戶名/數據庫名/數據庫密碼錯誤,請聯繫空間商檢查賬戶。
Quote:
方法:確保論壇data目錄下的sql_config.php用戶名與密碼都正確.若是用戶忘記了數據庫的密碼,能夠按以下方式進行密碼的修改:
若是 MySQL 正在運行,首先中止。
啓動 MySQL :bin/safe_mysqld --skip-grant-tables & 
就能夠不須要密碼就進入 MySQL 了。
而後就是 
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
1046:沒有選擇數據庫。
1048:字段不能爲空。
1049:數據庫不存在。
1050:數據表已存在。
1051:數據表不存在。
1054:字段不存在,自行創建字段。
1060:字段重複,致使沒法插入這個字段。
1062:字段值重複,入庫失敗 
Quote:
1.若是出相似主碼爲"65535"的錯誤,能夠查看相關表的自增字段,將字段值改在就能夠
2.確保相關數據表中主碼重複的字段是否存在,若是存在刪除這條記錄
3.備份數據庫,修復相關表(注:這種狀況比較常見,如pw_posts表,對錶進行修復的時候不要忘記備份).
1064:MySQL 不支持錯誤提示中的編碼。
1065:無效的 SQL 語句,SQL 語句爲空。
1067:MySQL 版本爲 5,不支持空的默認值。
1081:不能創建 Socket 鏈接。
1114:數據表已滿,不能容納任何記錄。
1115:設置的字符集在 MySQL 並無支持。
1116:打開的數據表太多。
1129:數據庫出現異常,請重啓數據庫。
1130:鏈接數據庫失敗,沒有鏈接數據庫的權限。
1133:數據庫用戶不存在。
1135:多是內存不足夠,請聯繫空間商解決。
1141:當前用戶無權訪問數據庫。
1142:當前用戶無權訪問數據表。
1143:當前用戶無權訪問數據表中的字段。
1146:數據表缺失,請恢復備份數據
1147:未定義用戶對數據表的訪問權限。
1149:SQL 語句語法錯誤。
1158:網絡錯誤,出現讀錯誤,請檢查網絡鏈接情況。
1159:網絡錯誤,讀超時,請檢查網絡鏈接情況。
1160:網絡錯誤,出現寫錯誤,請檢查網絡鏈接情況。
1161:網絡錯誤,寫超時,請檢查網絡鏈接情況。
1169:字段值重複,更新記錄失敗。
1177:打開數據表失敗。
1180:提交事務失敗。
1181:回滾事務失敗。
1193:不支持字符集限定(SET NAMES)。
1203:當前用戶和數據庫創建的鏈接已到達數據庫的最大鏈接數,請增大可用的數據庫鏈接數或重啓數據庫。
1205:加鎖超時。
1211:當前用戶沒有建立用戶的權限。
1216:外鍵約束檢查失敗,更新子表記錄失敗。
1217:外鍵約束檢查失敗,刪除或修改主表記錄失敗。
1226:當前用戶使用的資源已超過所容許的資源,請重啓數據庫或重啓服務器。
1227:權限不足,您無權進行此操做。
1235:MySQL版本太低,不具備本功能。
1250:客戶端不支持服務器要求的認證協議,請考慮升級客戶端。
1251:Client 不能支持 authentication protocol 的要求
Client does not support authentication protocol requested by server; consider upgrading MySQL client
Quote:
方法1:mysql> SET PASSWORD FOR 
-> ' some_user '@' some_host ' = OLD_PASSWORD(' newpwd '); 
結合咱們的實際狀況,在 MySQL Command Line Client 下運行: 
set password for root@localhost = old_password('123456');
方法2:
mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')
  -> WHERE Host = 'some_host' AND User = 'some_user';
mysql> FLUSH PRIVILEGES;
上面紅色的部分請按本身實際狀況修改。
1267:不合法的混合字符集。
2002:服務器端口不對,請諮詢空間商正確的端口。
2003:MySQL 服務沒有啓動,請啓動該服務。
2008:MySQL client ran out of memory
錯誤指向了MySQL客戶mysql。這個錯誤的緣由很簡單,客戶沒有足夠的內存存儲所有結果。
2013:遠程鏈接數據庫是有時會有這個問題,MySQL 服務器在執行一條 SQL 語句的時候失去了鏈接形成的。
10048:
Quote:
建議在my.ini文件中修改最大鏈接數,
把 mysql_connect() 方法都改爲了 mysql_pconnect() 方法.
要修改mysql_pconnect(),能夠在論壇的data目錄的sql_config.php中
$pconnect = 0; //是否持久鏈接
修改爲$pconnect = 1;
開啓防刷新,嚴禁刷新太快.
10055:沒有緩存空間可利用
Quote:
查看下你的C盤空間是否已經滿,清除一些沒有用的文件.
能夠在後臺的"論壇核心設置","核心功能設置"裏"進程優化"開啓,"GZIP 壓縮輸出"關閉.
查找了一下10055(沒有緩存空間可利用)出錯的緣由,分析了my.ini的配製文件,在my.ini中以下:
default-storage-engine=INNODB
innodb_additional_mem_pool_size=2M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=10M
innodb_log_file_size=10M
innodb_thread_concurrency=8
以爲能夠把innodb_buffer_pool_size=10M 加大如100M或是1000M
以上是對mysql5的
若是是mysql4能夠在my.ini中增長以下:
#innodb_data_file_path = ibdata1:2000M;ibdata2:2000M
#innodb_data_home_dir = c:ibdata
#innodb_log_group_home_dir = c:iblogs
#innodb_log_arch_dir = c:iblogs
#set-variable = innodb_mirrored_log_groups=1
#set-variable = innodb_log_files_in_group=3
#set-variable = innodb_log_file_size=5M
#set-variable = innodb_log_buffer_size=8M
#innodb_flush_log_at_trx_commit=1
#innodb_log_archive=0
#set-variable = innodb_buffer_pool_size=16M
#set-variable = innodb_additional_mem_pool_size=2M
#set-variable = innodb_file_io_threads=4
#set-variable = innodb_lock_wait_timeout=50
把前面的#去了
10061: 
Quote:
啓動這臺機器上的MySQL服務 
如服務啓動失敗
必定是你的my.ini文件出了差錯,
MySQL服務不能正常啓動 
你刪除了它後,MySQL就會按其默認配置運行,
那就沒有問題了
以上資料根據網上各方面資料整合而成。
          

web

相關文章
相關標籤/搜索