20180316 MySQL.TXT ---------- 更改密碼: 我們可以執行以下命令,修改root用户密碼 mysql> alter user user() identified by 'pass0'; root/pass0 mysql> set global validate_password_poilcy=0; mysql> set global validate_password_length=5; mysql> alter user user() identified by 'pass0'; ---------- 在Cent OS 7安裝MySQL-1 建議改成以下步驟 CentOS 7中安裝Mysql 5.7的注意事項 https://hk.saowen.com/a/079c8cee31701cb237dcb8c0cd8d88bc638fb920f82ac081fe6c904d632538e8 2018-03-16, 測試ok! 1) 安裝前需要卸載CentOS 7自帶的mariadb數據庫。 CentOS從7開始,從自帶的yum源中取消了MySQL,改為默認安裝MySQL分支mariadb,如果想安裝MySQL官方版本,可以卸載mariadb數據庫。方法是先執行rpm -qa|grep mariadb,對於所有出現的rpm包都執行rpm卸載。 2) 在/etc/yum.repos.d目錄下創建MySQL yum安裝所需的Repo文檔mysql-community.repo [mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ enabled=1 gpgcheck=0 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 這裏有兩點要注意 1.如果本機沒有安裝gpg密鑰,gpgcheck設置為0,gpgkey一行註釋掉。 2.在CentOS 7上安裝MySQL 5.7,community/el後面的版本號必須改為7,官網的例子是el/6,這是針對CentOS 6版本。如果不這幺改,在安裝MySQL Community Server必須的安裝包時,會安裝錯對應的版本,而導致後續安裝因為找不到對應包而無法安裝,這一點必須注意,MySQL官網的指南沒有説清楚,值得吐槽。 3) 在執行安裝前最好執行指令 yum update 更新所有可能的依賴包。 4) 安裝MySQL Community Server只需要執行 yum install -y mysql-community-server 即可,安裝過程中會自動安裝依賴的包,例如mysql-community-common等。 5) 安裝完成後執行 systemctl status mysqld.service 檢查MySQL是否啟動 系統顯示服務狀態是inactive,沒有啟動,執行 systemctl start mysqld.service 執行完後再運行systemctl status mysqld.service查看mysql運行狀態 6) 重置root用户密碼 從MySQL 5.7後,第一次啟動MySQL,會生成root用户的隨機密碼,可以執行以下命令查看 grep 'temporary password' /var/log/mysqld.log example: [root@60-250-98-236 yum.repos.d]# grep 'temporary password' /var/log/mysqld.log 2018-03-16T15:19:38.975505Z 1 [Note] A temporary password is generated for root@localhost: yPdTsk(jk1Zu 2018-03-19T07:27:21.313947Z 1 [Note] A temporary password is generated for root@localhost: Nn&j?Ty.y1_X 這個密碼是臨時密碼,必須修改為正式密碼,否則使用這個密碼登錄MySQL Server後,執行任何命令,都會顯示以下錯誤 登入MySQL Server: mysql -u root -p 我們可以執行以下命令,修改root用户密碼 mysql> alter user user() identified by 'pass0'; 但是會顯示以下錯誤 ... 這是因為MySQL默認使用的validate_password_policy是MEDIUM的緣故,MySQL的官網介紹validate_password_policy有以下三種: Policy, Tests Performed 0 or LOW, Length //只檢查密碼長度 1 or MEDIUM, Length; numeric, lowercase/uppercase, and special characters //檢查密碼長度,是否包含數字,大小寫字母,特殊字符 2 or STRONG, Length; numeric, lowercase/uppercase, and special characters; dictionary file //檢查密碼長度,是否包含數字,大小寫字母,特殊字符,以及是否包含字典文檔 引用地址 https://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html#sysvar_validate_password_policy MySQL安裝後默認的validate_password_policy為MEDIUM,我們重新設置的密碼不符合這個policy的要求,所以命令執行失敗。 如果要修改密碼成功,我們需要修改validate_password_policy為0 mysql> set global validate_password_poilcy=0; 默認的validate_password_length是8,我們可以修改為5 mysql> set global validate_password_length=5; 完成這兩步後我們可以修改root用户的密碼為admin,命令和前面一樣。 mysql> alter user user() identified by 'pass0'; root/pass0 7) 允許遠程主機訪問 在MySQL服務器主機上使用root用户登錄MySQL後,切換到mysql數據庫,再執行以下命令 mysql> use mysql; mysql> update user set host='%' where user='root'; mysql> quit 運行完後重啟MySQL服務 systemctl restart mysqld.service 再在防火牆上打開MySQL 3306端口,重啟firewalld服務 firewall-cmd --permanent --add-port=3306/tcp systemctl restart firewalld.service 之後可以使用MySQL客户端工具或者應用進程從遠程訪問MySQL服務器了。 ---------- 在Cent OS 7安裝MySQL-2 ref: 2018-03-16, 測試OK! https://dotblogs.com.tw/supershowwei/2017/08/28/173107 但是建議改成前面的步驟: 在Cent OS 7安裝MySQL-1 https://hk.saowen.com/a/079c8cee31701cb237dcb8c0cd8d88bc638fb920f82ac081fe6c904d632538e8 CentOS 7中安裝Mysql 5.7的注意事項 1. 移除 CentOS 7 內建的 MariaDB Libraries CentOS 7 預設內建 MariaDB Libraries,我們可以執行下面這兩行指令的其中一行,就能列出已經安裝的 MariaDB Packages。 rpm -qa | grep mariadb # or yum list installed | grep mariadb 移除也挺簡單的,我建議用 yum remove 指令來移除套件,讓 yum 幫我們處理套件相依的問題。 yum remove -y mariadb-libs 啟動 MySQL 服務時 libnuma.so.1 報錯 如果我們看到下列這串錯誤訊息,那很有可能是我們少裝了 numactl 套件。 bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory 執行 yum install 指令把它裝起來就行了 yum install -y numactl 2. MySQL 從 5.7.18 開始 my-default.cnf 不再內含在二進制包內 從 5.7.18 版本開始沒有 my.cnf 設定檔也可以執行 MySQL 服務,如果有朋友參考到 5.7.18 版本以前的二進制包安裝教學文章,通常會有一個步驟是複製 support-files/my-default.cnf 到 /etc 底下,這個步驟從 5.7.18 開始可以省略了。 可是如果要自訂環境變數怎麼辦? 一樣可以產生一個 my.cnf 放到 /etc 底下,而設定檔的內容只要設定我們想要調整的環境變數就行了,其他會維持預設值,這個連結說明了 MySQL 讀取設定檔位置的順序。 3. 底下附上安裝 MySQL 5.7.19 的指令 yum install -y libaio yum install -y numactl yum install -y wget cd /tmp wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz # -C: 如果要解壓縮到某個目錄,必須加上這個參數。 tar -zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz -C /usr/local cd /usr/local mv mysql-5.7.19-linux-glibc2.12-x86_64 mysql cd mysql groupadd mysql # -r: 建立一個系統的帳號,這個帳號的 UID 會有限制(/etc/login.defs)。 # -g: 帳號的 Initial Group # -s: 後面接一個 Shell,預設是 /bin/bash。 # /bin/false: 這是最嚴格的禁止 Login 選項,一切服務都不能用,這樣該用戶即使登錄,也不能夠執行 Linux 下的命令。 useradd -r -g mysql -s /bin/false mysql mkdir data chmod 750 data # -R: 進行遞迴(Recursive)的持續變更,亦即連同次目錄下的所有檔案都變更。 # 小數點(.): 目前的工作目錄 chown -R mysql . chgrp -R mysql . # 初始化MySQL,記得把臨時密碼記下來。 bin/mysqld --initialize --user=mysql A temporary password is generated for root@localhost: a=I)ip%7oltq # 產生 RSA 私鑰 bin/mysql_ssl_rsa_setup chown -R root . chown -R mysql data # 建立啟動腳本 cp support-files/mysql.server /etc/init.d/mysql.server # 啟動 mysql.server 服務 service mysql.server start # 使用剛剛生成的密碼登入 mysql bin/mysql -u root -p # 重設密碼 set password=password('{密碼}'); set password=password('hondamysql'); # 開啟 root 的遠端登入權限 grant all privileges on *.* to 'root'@'%' identified by '{密碼}' with grant option; grant all privileges on *.* to 'root'@'%' identified by 'hondamysql' with grant option; flush privileges; exit # 開啟防火牆 3306 埠號 firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload ---------- 移除MySQL 5.7 ref: 20180319, 測試成功 https://www.phpini.com/linux/rhel-centos-remove-mysql-server 首先檢查安裝在系統的 MySQL 相關套件, 可以用 rpm 或 yum 指令查看: # rpm -qa | grep mysql mysql-libs-5.1.73-5.el6_6.x86_64 mysql-server-5.1.73-5.el6_6.x86_64 mysql-5.1.73-5.el6_6.x86_64 或 # yum list installed | grep mysql 知道了安裝在系統的 MySQL 相關套件後, 用 YUM 移除: # yum remove mysql-libs mysql-server mysql-client mysql 移除了 MySQL 的相關套件後, 接著是把資料庫目錄及 my.cnf 移除: # rm -rf /var/lib/mysql/ # rm -rf /etc/my.cnf 這時已經完整地從系統移除 MySQL 了。 ---------- ref: 20180316, 不成功! https://stackoverflow.com/questions/10853004/removing-mysql-5-7-completely/16178696#16178696 sudo service mysql stop #or mysqld sudo killall -9 mysql sudo killall -9 mysqld apt-get ???? sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove sudo apt-get autoclean sudo deluser mysql sudo rm -rf /var/lib/mysql sudo apt-get purge mysql-server-core-5.7 sudo apt-get purge mysql-client-core-5.7 sudo rm -rf /var/log/mysql sudo rm -rf /etc/mysql ---------- https://kikinote.net/1311 獻給不想使用 phpMyAdmin 管理 MySQL 資料庫的人。 •安裝MySQL [shell]yum install mysql mysql-server 20180316: mysql-server不存在 •啟動MySQL服務 [shell]service mysqld start •設定 root 密碼 [shell]mysqladmin -u root password 1234 [tell]設定 root 密碼為 1234 [/tell] [shell]mysqladmin -u root -p password 5678 [tell]修改 root 密碼為 5678 [/tell] •連線至 MySQL [shell]mysql -u root -p •操控資料庫常用語法 mysql > show databases; #顯示資料庫 mysql > use your_databases; #使用資料庫 mysql > show your_databases; #顯示資料庫的所有 TABLE mysql > desc table_name; #查詢 TABLE 各欄位的資訊 mysql > create database your_database; #建立新的資料庫 mysql > drop your_database; #刪除資料庫 •使用者權限管理 mysql > GRANT all ON your_db.* TO user@'localhost' IDENTIFIED BY '1234'; # 把 your_db 這個資料庫的所有資料表權限給 user 使用者 mysql > FLUSH PRIVILEGES; # 更新權限 •常用語法 select 欄位名 from 資料表名稱 like '%a%'; # 查詢資料 insert into 資料表名稱(欄位1,欄位2)values('值1','值2'); # 新增資料 delete from 資料表名稱 where 條件式; # 刪除資料 update 資料表名稱 set 欄位1='值1',欄位2='值2'; # 更新資料 •匯出匯入資料庫 mysql > mysqldump -u root -p db_name > backup.sql; # 匯出資料庫 mysql -u root -p db_name < backup.sql # 匯入資料庫 (請先建立資料庫)