說明:
我在ubuntu14.04上開發爬蟲, 經常用到mysql數據庫, 這裏將一些常用操作做一些記錄,方便以後查閱,還會不斷更新…..
資料:
一、mysql的安裝:
- 環境: ubuntu14.04
安裝mysql server:
sudo apt-get install mysql-server
安裝MySqldb模塊:
sudo apt-get install python-mysqldb
二、 用戶管理
創建用戶:
命令:
CREATE USER 'username'@'host' IDENTIFIED BY'pwd';
說明:
- username - 你將創建的用戶名,
- host - 指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost, 如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%.
- password - 該用戶的登陸密碼,密碼可以爲空,如果爲空則該用戶可以不需要密碼登陸服務器.
例子:
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456'; CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456'; CREATE USER 'pig'@'%' IDENTIFIED BY '123456'; CREATE USER 'pig'@'%' IDENTIFIED BY ''; CREATE USER 'pig'@'%';
授權
命令
GRANT privileges ON databasename.tablename TO 'username'@'host'
說明:
- privileges - 用戶的操作權限,如SELECT , INSERT , UPDATE 等(詳細列表見該文最後面).如果要授予所的權限則使用ALL.;
- databasename - 數據庫名,
- tablename-表名,如果要授予該用戶對所有數據庫和表的相應操作權限則可用表示, 如.*.
例子
GRANT SELECT, INSERT ON test.user TO 'pig'@'%'; GRANT ALL ON *.* TO 'pig'@'%';
注意:用以上命令授權的用戶不能給其它用戶授權,如果想讓該用戶可以授權,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
設置與更改用戶密碼
命令:
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword'); # 如果是當前登陸用戶用 SET PASSWORD = PASSWORD("newpassword");
例子:
SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");
撤銷用戶權限
命令:
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
說明: privilege, databasename, tablename - 同授權部分.
例子:
REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:
假如你在給用戶’pig’@’%’授權的時候是這樣的(或類似的):GRANT SELECT ON test.user TO ‘pig’@’%’, 則在使用REVOKE SELECT ON . FROM ‘pig’@’%’;命令並不能撤銷該用戶對test數據庫中user表的SELECT 操作.相反,如果授權使用的是GRANT SELECT ON . TO ‘pig’@’%’;則REVOKE SELECT ON test.user FROM ‘pig’@’%’;命令也不能撤銷該用戶對test數據庫中user表的Select 權限.
具體信息可以用命令SHOW GRANTS FOR ‘pig’@’%’; 查看.
刪除用戶
命令:
DROP USER 'username'@'host';
三、關於mysql的遠程連接的設置
- mysql-server 端:
- 創建用戶(如果對現有用戶操作,則跳過此步驟):
CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;
(說明:username - 你將創建的用戶名, host - 指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost, 如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%. password - 該用戶的登陸密碼,密碼可以爲空,如果爲空則該用戶可以不需要密碼登陸服務器. ) - 賦予允許訪問權限:
grant all privileges on . to 創建的用戶名 @”%” identified by “密碼”;
flush privileges; # 刷新權限信息
- 創建用戶(如果對現有用戶操作,則跳過此步驟):
- 設置配置文件/etc/mysql/my.cnf
將 “bind-address = 127.0.0.1” 註釋掉, 使server監聽外部網絡的請求 - 重啓mysql 服務:
sudo service mysql restart 曾經出現的問題:ERROR 2003 (HY000): Can’t connect to MySQL server (111)
解決方案參考鏈接:點這裏關於mysql數據庫字符編碼的設置
mysql防止重複插入(sql):觸發器解決
四、編程使用隨記
中文字符插入失敗問題:將數據庫和其中的表的編碼默認設置爲utf-8
(1) SHOW VARIABLES LIKE ‘CHAR%’;
(2)創建數據庫:mysqladmin -u root -p create databaseName
自增
(1) 設置自增字段的初始值:alter table users AUTO_INCREMENT=10000;
(2) 創建表格時設置自增:
create table PaperInfo(
PID int primary key auto_increment,
ChineseText text,
EnglishText text,
originText text,
purl varchar(200),
pType int
)auto_increment = 1;外鍵
create table PaperInfo(
PID int primary key auto_increment,
ChineseText text,
EnglishText text,
originText text,
purl varchar(200),
pType int,
CONSTRAINT FK_ID FOREIGN KEY (pType) REFERENCES MenuItems(MID)
)auto_increment = 1;