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字符集。
- mysql> show variables like '%char%';
- +--------------------------+-------------------------------------+------
- | Variable_name | Value |......
- +--------------------------+-------------------------------------+------
- | character_set_client | utf8 |...... -- 客戶端字符集
- | character_set_connection | utf8 |......
- | character_set_database | utf8 |...... -- 資料庫字符集
- | character_set_filesystem | binary |......
- | character_set_results | utf8 |......
- | character_set_server | utf8 |...... -- 伺服器字符集
- | character_set_system | utf8 |......
- | character_sets_dir | D:\MySQL Server 5.0\share\charsets\ |......
- +--------------------------+-------------------------------------+------
- 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字符集。
- mysql> show table status from sqlstudy_db like '%countries%';
- +-----------+--------+---------+------------+------+-----------------+------
- | Name | Engine | Version | Row_format | Rows | Collation |......
- +-----------+--------+---------+------------+------+-----------------+------
- | countries | InnoDB | 10 | Compact | 11 | utf8_general_ci |......
- +-----------+--------+---------+------------+------+-----------------+------
三、檢視MySQL資料列(column)的MySQL字符集。
- mysql> show full columns from countries;
- +----------------------+-------------+-----------------+--------
- | Field | Type | Collation | .......
- +----------------------+-------------+-----------------+--------
- | countries_id | int(11) | NULL | .......
- | countries_name | varchar(64) | utf8_general_ci | .......
- | countries_iso_code_2 | char(2) | utf8_general_ci | .......
- | countries_iso_code_3 | char(3) | utf8_general_ci | .......
- | address_format_id | int(11) | NULL | .......
- +----------------------+-------------+-----------------+--------
修改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
- +--------------------------+---------------------------------+
- | Variable_name | Value |
- +--------------------------+---------------------------------+
- | character_set_client | utf8 |
- | character_set_connection | utf8 |
- | character_set_database | utf8 |
- | character_set_filesystem | binary |
- | character_set_results | utf8 |
- | character_set_server | utf8 |
- | character_set_system | utf8 |
- | character_sets_dir | D:"mysql-5.0.37"share"charsets" |
- +--------------------------+---------------------------------+
(2) 還有一種修改mysql預設字符集的方法,就是使用mysql的命令
- mysql> SET character_set_client = utf8 ;
- mysql> SET character_set_connection = utf8 ;
- mysql> SET character_set_database = utf8 ;
- mysql> SET character_set_results = utf8 ;
- mysql> SET character_set_server = utf8 ;
- mysql> SET collation_connection = utf8 ;
- mysql> SET collation_database = utf8 ;
- mysql> SET collation_server = utf8 ;
一般就算設定了表的mysql預設字符集為utf8並且通過UTF-8編碼傳送查詢,你會發現存入資料庫的仍然是亂碼。問題就出在這個connection連線層上。解決方法是在傳送查詢前執行一下下面這句:
- SET NAMES 'utf8';
它相當於下面的三句指令:
- SET character_set_client = utf8;
- SET character_set_results = utf8;
- SET character_set_connection = 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