1. 程式人生 > 實用技巧 >SQL命令備忘

SQL命令備忘

MySQL

1.連線MySQL

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

1、連線到本機上的MYSQL。
首先開啟DOS視窗,然後進入目錄mysql\bin,再鍵入命令mysql -uroot -p,回車後提示你輸密碼.注意使用者名稱前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼

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

2、連線到遠端主機上的MYSQL。假設遠端主機的IP為:110.110.110.110,使用者名稱為root,密碼為abcd123。則鍵入以下命令:
    mysql 
-h110.110.110.110 -uroot -p 123;(注:u與root之間可以不用加空格,其它也一樣) 3、退出MYSQL命令: exit (回車)

2.修改密碼和刪除使用者

格式:mysqladmin -u使用者名稱 -p舊密碼 password 新密碼

1、給root加個密碼ab12。
首先在DOS下進入目錄mysql\bin,然後鍵入以下命令
    mysqladmin -u root -password ab12
注:因為開始時root沒有密碼,所以-p舊密碼一項就可以省略了。

2、再將root的密碼改為djg345。
    mysqladmin -u root -p ab12 password djg345

3. 刪除使用者   @>mysql -u root -p    @>密碼   mysql>Delete FROM user Where User='test' and Host='localhost';   mysql>flush privileges;   mysql>drop database testDB; //刪除使用者的資料庫 刪除賬戶及許可權:>drop user 使用者名稱@'%';         >drop user 使用者名稱@ localhost;

4. 修改指定使用者密碼

  @>mysql -u root -p

  @>密碼

  mysql>update mysql.user set password=password('新密碼') where User="test" and Host="localhost";

  mysql>flush privileges;

3.增加新使用者

注意:和上面不同,下面的因為是MYSQL環境中的命令,所以後面都帶一個分號作為命令結束符
格式:grant select on 資料庫.* to 使用者名稱@登入主機 identified by “密碼”

3.1 登入MYSQL(有ROOT許可權),這裡以ROOT身份登入:

  @>mysql -u root -p

  @>密碼

  3.2 首先為使用者建立一個數據庫(testDB):

  mysql>create database testDB;

  3.3 授權test使用者擁有testDB資料庫的所有許可權(某個資料庫的所有許可權):

   mysql>grant all privileges on testDB.* to test@localhost identified by '1234';

   mysql>flush privileges;//刷新系統許可權表

  格式:grant 許可權 on 資料庫.* to 使用者名稱@登入主機 identified by "密碼"; 

  3.4 如果想指定部分許可權給一使用者,可以這樣來寫:

  mysql>grant select,update on testDB.* to test@localhost identified by '1234';

  mysql>flush privileges; //刷新系統許可權表

  3.5 授權test使用者擁有所有資料庫的某些許可權:   

  mysql>grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";

     //test使用者對所有資料庫都有select,delete,update,create,drop 許可權。

  //@"%" 表示對所有非本地主機授權,不包括localhost。

 //對localhost授權:加上一句grant all privileges on testDB.* to test@localhost identified by '1234';即可。

4.啟動和關閉mysql服務

Windows:
切換到mysql\bin目錄下,操作dos視窗
啟動: net start mysql
關閉: net stop mysql
Windows下mysql服務不能直接重啟,,必須先停止在啟動 Linux: 啟動: service mysql start 重啟: service mysql restart 關閉: service mysql stop

5.mysql跳過密碼驗證修改密碼

1、修改mysql的配置檔案

   MySQL配置檔案my.ini中,在[mysqld]下新增skip-grant-tables,關閉mysql服務並重新開啟;

   輸入命令:mysql -u root -p

   回車後,要求輸入密碼,直接回車跳過,則直接進入MySQL。


2、修改密碼:

  輸入以下命令開始修改root使用者的密碼(注意:命令中mysql.user中間有個“點”) 
  mysql> update mysql.user set password=PASSWORD(‘新密碼‘) where User=‘root‘; 
重新整理許可權表 mysql
> flush privileges;
退出 mysql
> quit

------一些小坑

1.group_concat函式長度預設最大為1024位元組

-- 查詢group_concat()當前可拼接的最大長度(預設是1024)
SHOW VARIABLES LIKE 'group_concat_max_len';  

-- 設定group_concat()函式可拼接的最大長度(mysql重啟後會失效)
SET SESSION group_concat_max_len=10240;
SET GLOBAL group_concat_max_len=10240;

-- my.ini配置檔案中新增
group_concat_max_len = 102400 #你要的最大長度
然後重啟mysql服務

2.MySQL根據配置檔案會限制server接受的資料包大小,有時候大的插入和更新會被max_allowed_packet引數限制掉,導致失敗,提示“Packet for query is too large (1142 > 1024)”

檢視目前配置
show VARIABLES like '%max_allowed_packet%'; 預設為1M

改為更大的值(mysql重啟後會失效): 
set global max_allowed_packet
= 2*1024*1024*10;

--my.ini配置檔案中[mysqld]下新增
max_allowed_packet = 100M