1. 程式人生 > 其它 >MySQL安裝和配置以及資料匯入

MySQL安裝和配置以及資料匯入

mysql 配置 和資料匯入

1.ubuntu安裝mysql

 sudo apt-get install mysql-server
 
 檢視mysql 狀態
   systemctl status mysql
  登入mysql
    sudo mysql -u root -p

2.訪問mysql需要加sudo

sudo mysql -uroot -p
 命令列修改root密碼:
   mysql> use mysql; 
   mysql> select user, host from user;
   mysql> UPDATE mysql.user set plugin='mysql_native_password' WHERE user='root';
   mysql> FLUSH PRIVILEGES;
mysql -uroot -p
  檢視版本
  mysql> select version();

3.遠端訪問

步驟01. vim  /etc/mysql/mysql.conf.d/mysqld.cnf  
   修改配置檔案mysqld.conf, 註釋掉:
   #bind_address=127.0.0.1  表示只允許本地訪問,註釋掉該行
步驟02.
  開啟MySQL root使用者的遠端訪問許可權:
  use mysql;
  update user set host = "%" where user = "root";
  flush privileges;
  
  關閉MySQL root使用者遠端訪問許可權
  use mysql;
  update user set host = "localhost" where user = "root" and host = "%";
  --delete from user where user = "root" and host = "%";;
  flush privileges;
  
 reload #不關閉UNIT的情況下重新載入配置檔案,讓配置生效,只重新載入.conf類的檔案
  重啟mysql服務或者重新載入配置檔案

建立庫

1.建立資料庫
 show variables like '%character%';

 create database if not exists my_database default character set = 'utf8';

2.建立使用者: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  create user  '使用者'@'%'  identified by '密碼';
  grant all privileges on *.* to  '使用者'@'%'  ;
  FLUSH PRIVILEGES;

 show databases;
 show global variables like 'wait_timeout';
 -- show status \G 
 --show charset;

載入資料

LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE 
 FIELDS TERMINATED BY '\t'
 OPTIONALLY ENCLOSED BY '"'
 LINES TERMINATED BY '\n'
 IGNORE 1 LINES
 set update_time=NOW()
 ;

 delete from data_dem where id = 122;
 truncate table data_dem;
 select * from data_dem limit 10 \G 
 select count(1) from data_dem  ;

 alter database data_dem character set utf8mb4;

排查

檢視網路情況
	ip     ping
	port    sudo lsof -i:3306
	iptables
###檢視mysql情況
    服務狀態 systemctl status mysql
	是否開放遠端連線  /etc/mysql/mysql.conf.d/mysqld.cnf  

配置檔案

default-authentication-plugin=mysql_native_password
character-set-server=utf8
character-set-filesystem=utf8
max_connections=1000

mysql叢集

主從複製 多主複製或環形複製
主從複製技術
  01.master將改變記錄到二進位制日誌(binary log)。這些記錄過程叫做二進位制日誌事件,binary log events;
  02.slave 將 master 的 binary log events 拷貝到它的中繼日誌(relay log) ;
  03.slave重做中繼日誌中的事件,將改變應用到自己的資料庫中。MySQL複製是非同步的且序列化的
  04.slave會從master讀取binlog來進行資料同步
複製的原則
	每個slave只有一個master
	每個slave只能有一個唯一的伺服器ID
	每個master可以有多個salve

1.配置檔案
     主伺服器配置
         1.【必須】主伺服器唯一ID
         server-id =1
         2.【必須】啟用二進位制日誌    log_bin = /mysql/log/mysql-bin
         log-bin=自己本地的路徑/mysqlbin
		 
		 例如: log_bin=master-bin 把這段話必須放到 [mysqld] 標籤下
		 -- log-bin配置項表示binlog的base name,產生的日誌檔名稱類似,master-bin.00001,master-bin.00002,master-bin.00003
		 -- sync_binlog=1了,表示每次事務提交,MySQL都會把binlog刷下去,是最安全但是效能損耗最大的設
		 log_bin=master-bin
         server-id=1
         sync_binlog=1	
     從伺服器配置
        1.【必須】從伺服器唯一ID
		server-id=2
2.主從中的mysql內執行命令配置				
	01.在主機上建立賬戶並授權slave
    02.從機執行
         change master 用於配置和改變 slave 伺服器用於連線 master 伺服器的引數,
	     以便 slave伺服器讀取 master 伺服器的 binlog 及 slave 伺服器的 relay log。
	     同時更新 master.info 及 relay-log.info信
	     
	       執行 change master 命令後的資訊儲存在 master.info 和 relay-log.info 兩個檔案中
	  
3. MySQL 查詢
    mysql> show variables like 'log_bin';
    -- show master status命令列出了日誌位點資訊,包括binlog file,binlog position等
   mysql> show master status   -- log-bin的配置名稱
   -- server是slave,則執行show slave status中
   mysql > show slave status\G
   
4.說明
    01. MySQL Replication在Master端開啟binlog,
	 Mster把它的二進位制日誌傳遞給slaves來達到master-slave資料一致的目的。 
     02.通過使用mysqlbinlog工具來使恢復資料 
	03.日誌位置
	    binlog是二進位制檔案,普通檔案檢視器cat more vi等都無法開啟,須使用自帶的 mysqlbinlog 命令檢視
        binlog日誌與資料庫檔案在同目錄中
		  mysql> show binlog events in

參考:

ubuntu18.04每次訪問mysql需要加sudo問題 https://www.cnblogs.com/wlzx-dic/p/14068364.html
MySQL允許遠端訪問  https://www.cnblogs.com/Deaseyy/p/13420245.html
mysql中如何在建立資料庫的時候指定資料庫的字符集 https://www.cnblogs.com/bulh/articles/10609198.html