1. 程式人生 > >Linux,Mac下MySQL的安裝及一些知識點的整理

Linux,Mac下MySQL的安裝及一些知識點的整理

### Linux下載安裝 在伺服器上下載的話,需要安裝Mysql5.7相關的yum源 ```bash wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm ``` 安裝剛下載的rpm包 ```bash rpm -ivh mysql80-community-release-el7-3.noarch.rpm ``` 確保yum源中生效的是我們剛剛新增進來的5.7版本 ```bash yum repolist all | grep ``` 結果如下圖, 很顯然,我預設生效的依賴是mysql8.0 , 所以需要修改配置 ![](https://img2020.cnblogs.com/blog/1496926/202005/1496926-20200528213803788-1744894852.png) 命令: ```bash vim /etc/yum.repos.d/mysql-community.repo ``` 修改成這樣: ![](https://img2020.cnblogs.com/blog/1496926/202005/1496926-20200528213822316-711131496.png) ok, 開始安裝 ```bash yum -y install mysql-community-server ``` 啟動服務: ```bash # centos6 service mysql stop/start # centos6 7 systemctl stop/start/restart mysqld.service ``` ### 其他零散的知識點 --- 在華為雲上按上面的安裝步驟,可以通過 `whereis my` 檢視到**配置檔案**的位置 ```bash [root@139 ~]# whereis my my: /etc/my.cnf ``` 這個my.cnf中有mysql程序相關的配置,比如剛才安裝的mysql的my.cnf就長下面這樣。 ``` [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid ``` --- 有時候我們想配置讓mysql支援**無密登陸**。 或者像上面那樣我們剛安裝了一臺mysql,也不知道root的密碼是多少,可以像下面這樣,在my.cnf中的 [mysqld] 模組中新增 `skip-grant-tables` 引數實現無密登陸 ``` [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid skip-grant-tables ``` --- 還是上面的情況,假設機器依然是centos7,我們安裝完mysql後**偏偏想用root賬戶密碼登陸mysql**,那**root的預設密碼**在哪裡檢視呢? ```bash grep 'temporary password' /var/log/mysqld.log ``` 這個密碼很難記,然後我們可以像下面這樣修改密碼 ```bash alter user 'root'@'localhost' identified by ‘newPassword’; ``` 如果我們設定的newPassword太簡單了,它會像下面這樣提示我們密碼不夠強大 Your password does not satisfy the current policy requirements 於是我們就得使用下面的命令修改規則 ``` set global validate_password_policy=LOW; ``` 重啟,重複上面的操作。 於是你就能本機輕鬆使用root登陸了 --- 如果mysql不是在你的本機,而是在遠端伺服器,你會發現有時明明賬號密碼都正確,但是你就是**不能遠端登陸**上去。很可能是因為我們使用的這個賬號就不允許遠端登陸。 mysql的使用者資訊存放在 mysql/user表下;如下圖,檢視這個表中的部分內容。 下圖中的host如果為localhsot,說名root賬戶僅能在本地登陸。 我的已經改成 % ,支援本地登陸和遠端登陸。 ![](https://img2020.cnblogs.com/blog/1496926/202005/1496926-20200528213835208-589154260.png) 通過命令修改: ```bash # 1. 連線資料庫 mysql> use mysql; mysql> update user set host = '%' where user = 'root'; ``` --- DataGrip想連線mysql, 需要下載相應的驅動, 如下圖: ![](https://img2020.cnblogs.com/blog/1496926/202005/1496926-20200528213852992-1412609128.png) ![](https://img2020.cnblogs.com/blog/1496926/202005/1496926-20200528213856318-1088627343.png) --- ### Mac下安裝 如果你的電腦mac,可以參考這個大佬的筆記安裝mysql:[點選檢視詳情](https://www.cnblogs.com/nickchen121/p/11145123.html) 上面的大佬中的筆記有如需要說一下的地方: ![](https://img2020.cnblogs.com/blog/1496926/202005/1496926-20200528213910361-1302506956.png) > 知道這一點,下次再安裝完mysql後,然後直接開啟控制檯輸入mysql -V卻發現,咦?怎麼說不認識這個命令? 難道是我沒安裝成功嗎?(純潔的微笑) 當然你按照上面大佬博文中的教程將mysql安裝到mac上後。然後使用如下命令啟動mysql: ``` sudo mysql.server start ``` 如何關閉mysql? 1. 簡單粗暴的通過 `ps aux | grep mysql `找到mysql的程序id,然後 `kill -9 pid`強殺 2. 也可以通過上面的指令碼 `sudo mysql.server stop`終止mysql 然而root的密碼你還是不知道。貌似你還是登陸不上去啊? 那你可以這樣做:在上面配置的support-file檔案中新增啟動引數`skip-grant-tables` ![](https://img2020.cnblogs.com/blog/1496926/202005/1496926-20200528213924309-902584574.png) 然後你就能免密登陸了(免密登陸,它讓你輸入密碼,你直接敲回車就能進去,然後你要做的第一件事就是去改密碼) 重新整理一下許可權表:新設定使用者或更改密碼後需用flush privileges重新整理MySQL的系統許可權相關表,否則會出現拒絕訪問,還有一種方法,就是重新啟動mysql伺服器,來使新設定生效。­ ``` flush privileges ``` 執行命令修改root密碼: ```bash alter user 'root'@'localhost' identified by 'root'; ``` --- 查詢my.cnf中定義的埠: ``` >select @@port; +--------+ | @@port | +--------+ | 3306 | +--------+ ``` ---   再說一個小技巧:可以幫助我們快速檢視到mysql都使用了哪些配置檔案。 ``` ps aux | grep mysql ``` 如下:(當然這是在mysql已經啟動的情況下) ```bash MacBook-Pro:~ root# ps aux | grep mysql root 39669 0.0 0.0 4285448 808 s005 S+ 7:32PM 0:00.00 grep mysql _mysql 39097 0.0 0.6 4689984 47620 s005 S 7:16PM 0:00.58 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --skip-grant-tables --log-error=MacBook-Pro.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid root 38998 0.0 0.0 4288076 936 s005 S 7:16PM 0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe --skip-grant-tables --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysqld.local.pid ```