1. 程式人生 > >linux環境下安裝mysql資料庫

linux環境下安裝mysql資料庫

1.檢視linux版本:file /sbin/init 或者 file /bin/ls
2.檢視系統是否已經安裝了mysql的其他版本:
ps:yum與rpm等改天系統學一下

[root@leo usr]#rpm -qa|grep mysql
mysql-libs-5.1.52-1.e16_0.1.x86_64
[root@leo usr]#yum -y remove mysql-libs*
....

3.oracle官網下載到mysql發現壓縮包裡有一大波安裝檔案,如下:
mysql安裝包s
MySQL-client 客戶端元件
MySQL-debuginfo 除錯MySQL的元件
MySQL-devel 想針對於MySQL編譯安裝PHP等依賴於MySQL的元件包
MySQL-embedded MySQL的嵌入式版本
MySQL-server 服務端
MySQL-shared 共享庫
MySQL-shared-dompat 為了相容老版本的共享庫
MySQL-test MySQL的測試元件(線上處理功能)
4.安裝其中的 server,devel,client
使用rpm:

rpm -ivh mysql-community-server-5.7.18-1.el6.x86_64.rpm

遇到問題,顯示:

warning: mysql-community-server-5.7.18-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
    mysql-community-client(x86-64) >= 5.7.9 is needed by mysql-community-server-5.7.18-1.
el6.x86_64 mysql-community-common(x86-64) = 5.7.18-1.el6 is needed by mysql-community-server-5.7.18-1.el6.x86_64

發現是包的依賴關係問題,得先安裝client和common,最後安裝來安裝去,發現得這樣順序安裝(根據包依賴猜的):

mysql-community-common-5.7.18-1.el6.x86_64.rpm
mysql-community-libs-5.7.18-1.el6.x86_64.rpm
mysql-community-client-5.7.18
-1.el6.x86_64.rpm mysql-community-server-5.7.18-1.el6.x86_64.rpm

5.安裝成功;
6.啟動 mysql服務:
安裝完成在 /etc/init.d/mysqld 下執行 ./mysqld start --user=root
(這裡注意,我第一次執行時候未加 –user=root引數,執行時候報錯,檢視日誌 /var/log/mysqld.log得知是沒有對某個檔案的操作許可權,加上該引數就可以 了),其實這裡有點兒含糊,改天佈置集群后,在其他主機安裝mysql時候再徹底研究一下。
7.連線MySQL,這裡安裝的是MySQL5.7,該版本在安裝時候會預設生成密碼,檢視預設密碼方式:grep 'temporary password' /var/log/mysqld.log(MySQL安裝已經是半年之前了現在才想起來重新學習,這裡我在啟動時候盯著日誌看也沒找到有預設密碼的字樣,所以猜測MySQL初始化是我在幾個月前完成的)。注意第一次連線上資料庫之後,需要手動修改密碼 alter user [email protected] identified by 'your_newPassword'
8.我這兒使用的是虛擬機器,MySQL安裝完成後我在Windows主機上使用Navicat連線MySQL失敗,遂用cmd telnet ip 3306 發現埠未開發,開放預設的3306埠的方法:

vi /etc/sysconfig/iptables

在 -A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 後寫上

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j

順便把tomcat埠也給開放了,然後重啟網絡卡:

service iptables restart

檢視埠情況:

service iptables status

完成上面步驟之後,還是沒辦法訪問,網上搜索得知虛擬機器系統還得設定埠轉發,仔細想想感覺這樣是因為害怕是與主機的埠發生衝突了,但是ip也不一樣啊,難道是說,只有在主機訪問虛擬機器時候才會這樣,其他ip的主機並不會?想讓其他人試試,但是想想又得設定內網穿透,閒言少敘,如何設定埠轉發:
查了半天只有nat模式可以設定埠轉發
9.那可咋整?
再查了下,發現根本不是埠轉發的問題,而是MySQL裡預設不允許遠端遠端登入,修改方式:

use mysql;
update user set host = '%' where user = 'root';
flush privileges;

再試試,成功。
10.阿里雲上安裝了同樣版本的MySQL,安裝完成但是沒辦法啟動。決定檢視官方文件:http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html (my.cnf配置檔案中找到該URL)。官方的rpm包安裝啟動方法是

sudo service mysqld start 

但是啟動之後發現如下錯誤:

mysqld: Can't change dir to '/var/lib/mysql/' (OS errno 13 - Permission denied)

隨之將該路徑使用者組及所有者改為mysql,繼續啟動還是報錯:

mysqld.service: main process exited, code=exited, status=1/FAILURE

檢視日誌有如下錯誤:

Unable to lock ./ibdata1 error: 11

又在下面找打這麼一段話:Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data! 應該是自己什麼時候亂搞刪了東西了,後來又重新裝mysql。我重新裝了一次,啟動,成功。汗顏。