1. 程式人生 > >MySql 5.7中新增使用者,新建資料庫,使用者授權,刪除使用者,修改密碼,匯入匯出sql檔案,設定字符集

MySql 5.7中新增使用者,新建資料庫,使用者授權,刪除使用者,修改密碼,匯入匯出sql檔案,設定字符集

1、新建使用者 

建立test使用者,密碼是1234。

mysql -u root -p 
CREATE USER “test”@”localhost” IDENTIFIED BY “1234”; #本地登入 
CREATE USER “test”@”%” IDENTIFIED BY “1234”; #遠端登入 
quit 
mysql -utest -p #測試是否建立成功

2、為使用者授權

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

b.登入MYSQL,這裡以ROOT身份登入:

mysql -u root -p

c.為使用者建立一個數據庫(testDB):

create database testDB; 
create database testDB default charset utf8 collate utf8_general_ci;

d.授權test使用者擁有testDB資料庫的所有許可權:

grant all privileges on testDB.* to “test”@”localhost” identified by “1234”; 
flush privileges; #刷新系統許可權表

e.指定部分許可權給使用者:

grant select,update on testDB.* to “test”@”localhost” identified by “1234”; 
flush privileges; #刷新系統許可權表

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

grant select,delete,update,create,drop on . to [email protected]”%” identified by “1234”; #”%” 表示對所有非本地主機授權,不包括localhost

g.專案案例:  

CREATE USER "customer"@"%" IDENTIFIED BY "customer248";
grant all privileges on customer.* to "customer"@"%" identified by "customer248";
flush privileges; 

3、刪除使用者

mysql -u root -p 
Delete FROM mysql.user Where User=”test” and Host=”localhost”; 
flush privileges; 
drop database testDB;

刪除賬戶及許可權:

drop user 使用者名稱@’%’; 
drop user 使用者名稱@ localhost;

4、修改指定使用者密碼

mysql -u root -p 
update mysql.user set authentication_string=password(“新密碼”) where User=”test” and Host=”localhost”; 
flush privileges;

window下

1.匯出整個資料庫
mysqldump -u 使用者名稱 -p 資料庫名 > 匯出的檔名
mysqldump -u dbuser -p dbname > dbname.sql

2.匯出一個表
mysqldump -u 使用者名稱 -p 資料庫名 表名> 匯出的檔名
mysqldump -u dbuser -p dbname users> dbname_users.sql

3.匯出一個數據庫結構
mysqldump -u dbuser -p -d --add-drop-table dbname >d:/dbname_db.sql
-d 沒有資料 --add-drop-table 在每個create語句之前增加一個drop table

4.匯入資料庫
常用source 命令
進入mysql資料庫控制檯,如
mysql -u root -p
mysql>use 資料庫
然後使用source命令,後面引數為指令碼檔案(如這裡用到的.sql)
mysql>source d:/dbname.sql

1. 匯入資料到資料庫

mysql -uroot -D資料庫名 

1. 匯入資料到資料庫中得某個表

mysql -uroot -D資料庫名  表名

D:\APMServ5.2.6\MySQL5.1\bin>mysqldump -u root -p  erp lightinthebox_tags > ligh
tinthebox.sql

linux下

一、匯出資料庫用mysqldump命令(注意mysql的安裝路徑,即此命令的路徑):
1、匯出資料和表結構:
mysqldump -u使用者名稱 -p密碼 資料庫名 > 資料庫名.sql
#/usr/local/mysql/bin/   mysqldump -uroot -p abc > abc.sql
敲回車後會提示輸入密碼

2、只匯出表結構
mysqldump -u使用者名稱 -p密碼 -d 資料庫名 > 資料庫名.sql
#/usr/local/mysql/bin/   mysqldump -uroot -p -d abc > abc.sql

注:/usr/local/mysql/bin/  --->  mysql的data目錄


二、匯入資料庫
1、首先建空資料庫
mysql>create database abc;

2、匯入資料庫
方法一:
(1)選擇資料庫
mysql>use abc;
(2)設定資料庫編碼
mysql>set names utf8;
(3)匯入資料(注意sql檔案的路徑)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u使用者名稱 -p密碼 資料庫名 < 資料庫名.sql
#mysql -uabc_f -p abc < abc.sql

問題集錦:

定字符集 --default-character-set=utf8,命令如下:
mysql -uroot -p --default-character-set=utf8  test_server < test_service.sql

如果想在匯入的過程中,觀察日誌(最好在sql檔案所在的目錄下執行)

mysql -uroot -p --default-character-set=utf8 資料庫例項名

source test_service.sql;

資料匯入報錯:Got a packet bigger than‘max_allowed_packet’bytes的問題

2個解決方法:

1.臨時修改:mysql>set global max_allowed_packet=524288000;修改 #512M

2.修改my.cnf,需重啟mysql。  www.2cto.com  

  在 [MySQLd] 部分新增一句(如果存在,調整其值就可以):

  max_allowed_packet=10M


三種MySQL字符集的方法

MySQL字符集多種多樣,下面為您列舉了其中三種最常見的MySQL字符集檢視方法,該方法供您參考,希望對您學習MySQL資料庫能有所啟迪。

一、檢視MySQL資料庫伺服器和資料庫MySQL字符集。

  1. mysql> show variables like '%char%';  
  2. +--------------------------+-------------------------------------+------  
  3. | Variable_name            | Value                               |......  
  4. +--------------------------+-------------------------------------+------  
  5. | character_set_client     | utf8                                |......   -- 客戶端字符集  
  6. | character_set_connection | utf8                                |......  
  7. | character_set_database   | utf8                                |......   -- 資料庫字符集  
  8. | character_set_filesystem | binary                              |......  
  9. | character_set_results    | utf8                                |......  
  10. | character_set_server     | utf8                                |......   -- 伺服器字符集  
  11. | character_set_system     | utf8                                |......  
  12. | character_sets_dir       | D:\MySQL Server 5.0\share\charsets\ |......  
  13. +--------------------------+-------------------------------------+------ 
  14. mysql> show variables like '%collation%'; +----------------------+--------------------+ | Variable_name        | Value              | +----------------------+--------------------+ | collation_connection | gb18030_chinese_ci | | collation_database   | latin1_swedish_ci  | | collation_server     | latin1_swedish_ci  | +----------------------+--------------------+

二、檢視MySQL資料表(table)的MySQL字符集。

  1. mysql> show table status from sqlstudy_db like '%countries%';  
  2. +-----------+--------+---------+------------+------+-----------------+------  
  3. | Name      | Engine | Version | Row_format | Rows | Collation       |......  
  4. +-----------+--------+---------+------------+------+-----------------+------  
  5. | countries | InnoDB |      10 | Compact    |   11 | utf8_general_ci |......  
  6. +-----------+--------+---------+------------+------+-----------------+------ 

三、檢視MySQL資料列(column)的MySQL字符集。

  1. mysql> show full columns from countries;  
  2. +----------------------+-------------+-----------------+--------  
  3. | Field                | Type        | Collation       | .......  
  4. +----------------------+-------------+-----------------+--------  
  5. | countries_id         | int(11)     | NULL            | .......  
  6. | countries_name       | varchar(64) | utf8_general_ci | .......  
  7. | countries_iso_code_2 | char(2)     | utf8_general_ci | .......  
  8. | countries_iso_code_3 | char(3)     | utf8_general_ci | .......  
  9. | address_format_id    | int(11)     | NULL            | .......  
  10. +----------------------+-------------+-----------------+--------  

修改mysql預設字符集的方法

mysql預設字符集能否進行修改呢?答案是肯定的,下面就將教您兩種修改mysql預設字符集的方法,希望對您學習mysql預設字符集方面能有所啟迪。

(1) 最簡單的修改方法,就是修改mysql的my.ini檔案中的字符集鍵值,

如 default-character-set = utf8 
character_set_server = utf8

修改完後,重啟mysql的服務,service mysql restart

使用 mysql> SHOW VARIABLES LIKE 'character%';檢視,發現數據庫編碼均已改成utf8

  1. +--------------------------+---------------------------------+   
  2. | Variable_name | Value |   
  3. +--------------------------+---------------------------------+    
  4. | character_set_client | utf8 |   
  5. | character_set_connection | utf8 |   
  6. | character_set_database | utf8 |  
  7. | character_set_filesystem | binary |   
  8. | character_set_results | utf8 |   
  9. | character_set_server | utf8 |   
  10. | character_set_system | utf8 |   
  11. | character_sets_dir | D:"mysql-5.0.37"share"charsets" |   
  12. +--------------------------+---------------------------------+  

(2) 還有一種修改mysql預設字符集的方法,就是使用mysql的命令

  1. mysql> SET character_set_client = utf8 ;  
  2. mysql> SET character_set_connection = utf8 ;   
  3. mysql> SET character_set_database = utf8 ;   
  4. mysql> SET character_set_results = utf8 ;    
  5. mysql> SET character_set_server = utf8 ;   
  6. mysql> SET collation_connection = utf8 ;  
  7. mysql> SET collation_database = utf8 ;   
  8. mysql> SET collation_server = utf8 ; 

一般就算設定了表的mysql預設字符集為utf8並且通過UTF-8編碼傳送查詢,你會發現存入資料庫的仍然是亂碼。問題就出在這個connection連線層上。解決方法是在傳送查詢前執行一下下面這句:

  1. SET NAMES 'utf8';  

它相當於下面的三句指令:

  1. SET character_set_client = utf8;  
  2. SET character_set_results = utf8;   
  3. SET character_set_connection = utf8
專案案例: SET character_set_client = utf8 ;  
SET character_set_connection = utf8 ;   
SET character_set_database = utf8mb4 ;   
SET character_set_results = utf8 ;    
SET character_set_server = utf8mb4 ;   

設定字符集
MySQL的預設編碼是Latin1,不支援中文,要支援需要把資料庫的預設編碼修改為gbk或者utf8。
1、在/etc/下找到my.cnf,如果沒有就把MySQL的安裝目錄下的support-files目錄下的my-medium.cnf複製到/etc/下並改名為my.cnf即可 
2、開啟my.cnf以後,

    在[client]下面加上

     default-character-set=utf8

     在[mysqld]下面加上

     default-character-set=utf8
     init_connect='SET NAMES utf8'

    儲存並關閉

3、配置檔案修改後要重啟mysql服務才能生效:
systemctl restart mysqld