MySQL安裝和配置以及資料匯入
阿新 • • 發佈:2021-10-21
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