mysql 常用操作

說明:

我在ubuntu14.04上開發爬蟲, 經常用到mysql數據庫, 這裏將一些常用操作做一些記錄,方便以後查閱,還會不斷更新…..
資料:

  • 常用的一個tutorial
  • 瞭解一下mysql體系結構, 其中的存儲引擎也要好好學習,不同引擎對於鎖的支持不同,這對併發訪問mysql效率有直接的決定作用。

一、mysql的安裝:

  • 環境: ubuntu14.04
  • 安裝mysql server:

        sudo apt-get install mysql-server
    
  • 安裝MySqldb模塊:

        sudo apt-get install python-mysqldb
    

二、 用戶管理

  1. 創建用戶:

    • 命令:

      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'@'%';
      
  2. 授權

    • 命令

      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;
      
  3. 設置與更改用戶密碼

    • 命令:

      SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
      # 如果是當前登陸用戶用
      SET PASSWORD = PASSWORD("newpassword");
      
    • 例子:

      SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");
      
  4. 撤銷用戶權限

    • 命令:

      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’@’%’; 查看.

  5. 刪除用戶

    • 命令:

      DROP USER 'username'@'host'; 
      

三、關於mysql的遠程連接的設置

  1. mysql-server 端:
    • 創建用戶(如果對現有用戶操作,則跳過此步驟):
      CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;
      (說明:username - 你將創建的用戶名, host - 指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost, 如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%. password - 該用戶的登陸密碼,密碼可以爲空,如果爲空則該用戶可以不需要密碼登陸服務器. )
    • 賦予允許訪問權限:
      grant all privileges on . to 創建的用戶名 @”%” identified by “密碼”;
      flush privileges; # 刷新權限信息
  2. 設置配置文件/etc/mysql/my.cnf
    將 “bind-address = 127.0.0.1” 註釋掉, 使server監聽外部網絡的請求
  3. 重啓mysql 服務:
    sudo service mysql restart
  4. 曾經出現的問題:ERROR 2003 (HY000): Can’t connect to MySQL server (111)
    解決方案參考鏈接:點這裏

  5. 關於mysql數據庫字符編碼的設置

  6. mysql防止重複插入(sql):觸發器解決

四、編程使用隨記

  1. 中文字符插入失敗問題:將數據庫和其中的表的編碼默認設置爲utf-8
    (1) SHOW VARIABLES LIKE ‘CHAR%’;
    (2)

  2. 創建數據庫:mysqladmin -u root -p create databaseName

  3. 自增
    (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;

  4. 外鍵
    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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章