MySQL工做經驗

  • 如下是根據工做中遇到各類場景用到的一些Mysql用法,比較實用,基本是語法以外的一些東西。mysql

  修改帳戶密碼

  1.打開Mysql控制檯,輸入原密碼;sql

  2.輸入如下語法:mysql> set password for root@localhost = password('123456')。數據庫

 

  忘了root密碼,怎麼辦?

  1. 關閉正在運行的MySQL服務;服務器

  2. 打開DOS窗口,轉到mysql\bin目錄;數據結構

  3. 輸入mysqld --skip-grant-tables 回車; --skip-grant-tables 的意思是啓動MySQL服務的時候跳過權限表認證ide

  4. 再開一個DOS窗口(由於剛纔那個DOS窗口已經不能動了),轉到mysql\bin目錄;測試

  5. 輸入mysql回車,若是成功,將出現MySQL提示符 >;大數據

  7. 鏈接權限數據庫: use mysql;ui

  8. 改密碼:update user set password=password("123") where user="root";(別忘了最後加分號);spa

  9. 刷新權限(必須步驟):flush privileges;

  10. 退出 quit;

  11. 註銷系統,再進入,使用用戶名root和剛纔設置的新密碼123登陸。

 

  完全卸載mysql

  1. 控制面板裏卸載Mysql;

  2. 刪除C:\Program Files\MySQL文件夾(服務安裝位置);

  3. 刪除C:\Documents and Settings\All Users\Application Data\MySQL文件夾(數據庫存貯位置);

  4. regedit打開註冊表, 刪除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL;HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL(註冊表非必要步驟,實在沒辦法就刪); 

 

  一臺服務器安裝多個mysql服務提供給多個項目做測試環境

  1. 中止mysql服務;

  2. 將數據庫安裝目錄和數據庫存貯目錄都複製到另一個路徑並重命名;

  3. 複製出來的mysql文件夾的my.ini全部的默認路徑改爲新的路徑,並將全部的port=3306改爲3307,有兩個地方,具體以下:

    修改以下內容: 
    [client] 
    port=3307 #第一個數據庫的默認端口是3306 這裏須要另外啓用一個端口 
# The TCP
/IP Port the MySQL Server will listen on port=3307
# Path
to installation directory. basedir="E:\MySQL2\MySQL Server 5.5\" #第二個數據庫服務安裝位置
# Path
to the database root datadir="E:\MySQL2\MySQL Server 5.5\data\" #第二個數據庫存放位置

  4. 建立服務:(重點:先進入到MySql2的bin目錄下,最好先把原來的mysql環境變量刪除,防止mysqld用的是以前的文件夾裏的)mysqld install MySQL2 --defaults-file="E:\MySQL2\MySQL Server 5.5\my.ini" 

  5.修改註冊表HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet-->Services 找到剛纔建立的MySQL2,

     將ImagePath修改爲以下"E:\MySQL2\MySQL Server 5.5\bin\mysqld" --defaults-file="E:\MySQL2\MySQL Server5.5\my.ini" MySQL2

  6. 啓動新服務

  7.1 狀況1:對於原數據庫data沒有一塊兒拷貝,那麼須要修改數據庫密碼,新的數據庫默認密碼爲空,先使用127.0.0.1登入後運行

    1. use mysql;
    2. update user set password=password('root') where user='root'3. FLUSH PRIVILEGES4. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; 

   7.2狀況2:直接數據庫存貯data都一塊兒拷貝了,那麼用戶表應該也在裏面,就直接用老的數據庫密碼登陸就行。

  刪除mysql服務

   cmd:sc delete mysql,完了以後重啓電腦生效。

 

  mysql主從備份

   1. 先看主機的

   1.1 編輯my.ini文件,找到節點[mysqld],增長三條:

    log-bin=mysql-bin

    server-id=主機服務器配一個惟一的ID編號,1至32

    binlog-do-db=數據庫名字,如同步多個數據庫用逗號隔開

  1.2 重啓服務

  1.3.pushd C:\Program Files\MySQL\MySQL Server 5.5\bin

  1.4.mysql -h192.168.3.22 -uroot -proot

  1.5.GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by '123456'; (注意分號必定要加)

  1.6.show master status;  (注意分號必定要加) 經過這一步獲取到文件名和日誌索引[配置到從機須要]

  

  2.再看從機的

  2.1  編輯my.ini文件,找到節點[mysqld],增長一條:

    server-id=從機服務器id,與主機不一樣,1至32

  2.2 重啓服務

  2.3 pushd C:\Program Files\MySQL\MySQL Server 5.5\bin

  2.4.mysql -h192.168.3.180 -uroot -proot

  2.5.change master to master_host='192.168.3.22',master_user='mysync',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=107; 

  2.6.stop slave;

  2.7.start slave

  2.8.show slave status\G

 

  3. 確認一致性

  3.1 對比Master_Log_File 和 Relay_Master_Log_File 是否一致;

  3.2 對比Read_Master_Log_Pos 和 Exec_Master_Log_Pos 是否一致;

  3.3 Slave_IO_Running: Yes;

  3.4 Slave_SQL_Running: Yes;

  親測斷網斷電均可恢復同步;

 

  帳戶權限和IP限制

//進入mysql控制檯,刪除root遠程訪問權限,僅容許本機訪問
    delete from user where user ='root' and host ='%';

    //保存
    flush privileges;

    //建立mysql只讀帳戶
    grant select on *.*to readonly@"%" identified by "sudy@gjwg123456";

    //建立ip限制的帳戶
    grant all privileges on *.* to 'root'@'192.100.50.73' identified by 'sudy@gjwg123456';

  //放開root遠程登陸,容許全部IP訪問
  grant all privileges on *.* to 'root'@'%' identified by 'sudy@gjwg123456' with grant option;

//保存
flush privileges;

  

  對N張數據結構相同的表批量增長字段

   有時候根據模板表讓系統自動建立子表用於緩解大數據壓力和拆分業務,須要增長字段的時候,就須要對上百張表結構進行改動。

   利用CONCAT先批量生成語句,而後全選執行便可。

   1. 增長字段:SELECT CONCAT('alter table db_gpsround.',table_name,' add sjlsh int(1) default 0 COMMENT \'審計流水號,0未入庫,1已入庫\';') as hh FROM information_schema.tables WHERE table_schema = 'db_gpsround';

   2. 增長索引:SELECT CONCAT('alter table db_gps_xlbh.',table_name,' add index zjgxsj(zjgxsj);') as hh FROM information_schema.tables WHERE table_schema = 'db_gps_xlbh';

 

  利用mysqldump備份與還原數據庫

  備份整個數據庫
  D:\Program Files\MySQL\MySQL Server 5.5\bin>mysqldump -uroot -p123 dbparking > E:\mysql_ghost\dbparking.sql
 
  還原整個數據庫
  D:\Program Files\MySQL\MySQL Server 5.5\bin>mysql -uroot -p123 testpark < E:\mysql_ghost\dbparking.sql

  備份表
  D:\Program Files\MySQL\MySQL Server 5.5\bin>mysqldump -uroot -p123 dbparking 表1 表2 表3> E:\mysql_ghost\dbparking.sql
  
  還原表
  同上

 

  按期備份與刪除備份

    //利用mysqldump備份,利用winrar壓縮,注意備份時會影響其餘程序,儘可能選擇在晚上備份
    @echo on  
      cd D:\Program Files\MySQL\MySQL Server 5.5\bin 
      set Ymd=%date:~,4%%date:~5,2%%date:~8,2%
      set filename=db_dbjs_%Ymd%
      mysqldump.exe db_dbjs -uroot -psudy1223@2016 -R>     D:\DBServerI\db_back\db_dbjs\%filename%.sql  
      c:   
      cd C:\Program Files\WinRAR
      WinRAR a -m5 -df -ep     D:\DBServerI\db_back\db_dbjs\%filename%.rar      D:\DBServerI\db_back\db_dbjs\%filename%.sql
    @echo off
    //刪除3天前的備份文件
    forfiles /p "D:\DBServerI\db_back" /s /m *.* /d -3 /c "cmd /c del @path"    
相關文章
相關標籤/搜索