CentOS7 離線安裝MySQL5.6.26
安裝環境:系統是 CentOS Linux release 7.5.1804 (Core)
安裝軟件:MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar
1、卸載之前安裝的MySQL
[root@localhost data] rpm -qa | grep mysql --查看系統之前是否已安裝MySQL。
[root@localhost data] rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64 --執行刪除語句
[root@localhost data] rm -rf /var/lib/mysql* --善后處理
[root@localhost data] rm -rf /usr/share/mysql*
2、安裝MySQL
2.1 下載並安裝 libaio
[root@localhost data] cd /usr/local
[root@localhost data] wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
[root@localhost data] rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm
2.2 下載並安裝MySQL
[root@localhost data] cd /data
[root@localhost data] wget https://dev.mysql.com/get/archives/mysql-5.6/MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar
[root@localhost data] tar -xf MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar
[root@localhost data] rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
[root@localhost data] rpm -ivh MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
注意:rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm可能報錯:
- 問題
[root@localhost data]# rpm -ivh MySQL-server-5.6.27-1.el6.x86_64.rpm --nosignature
Preparing... ################################# [100%]
Updating / installing...
1:MySQL-server-5.6.27-1.el6 ################################# [100%]
warning: user mysql does not exist - using root
warning: group mysql does not exist - using root
FATAL ERROR: please install the following Perl modules before executing /usr/bin/mysql_install_db:
Data::Dumper
方法[root@localhost data]# yum install -y perl-Module-Install.noarch
- 問題
[root@localhost data]# service mysql start
Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)
方法具體看報錯日志
[root@localhost data]#cat /var/lib/mysql/localhost.err
如果是權限:chown 、chmod
如果是ERRORCan't open and lock privilege tables: Table 'mysql.user' doesn't exist
可能是mysql.user我安裝時沒初始化好導致,用下面命令初始化一下數據庫
初始化數據庫:[root@localhost data]#mysql_install_db --user=mysql
4. 問題
selinux惹的禍,如果是centos系統,默認會開啟selinux
方法 關閉它,打開/etc/selinux/config,把SELINUX=enforcing改為SELINUX=disabled后存盤退出重啟機器。
5. 問題
file /usr/share/mysql/charsets/README from install of MySQL-server-5.6.27-1.el6.x86_64 conflicts with file from package mariadb-libs-1:5.5.41-2.el7_0.x86_64
方法:系統已經安裝了其他版本的mariadb-libs包和mysql數據庫文件導致不兼容。
[root@localhost data]# yum remove mariadb-libs-1:5.5.41-2.el7_0.x86_64
2.3 查看並修改MySQL root用戶密碼
~~# more /root/.mysql_secret(忽略)~~
[root@localhost data]# service mysql restart
~~# mysqladmin -uroot -pFeyU2YjwMcAw9Nv0 password 'root' --修改root密碼為root(忽略)~~
[root@localhost data]# /usr/bin/mysqladmin -u root password 'root'
~~[root@localhost data]# /usr/bin/mysqladmin -u root -h localhost password 'root'(忽略)~~
# mysql -uroot -proot --測試登陸
2.4 配置MySQL數據庫編碼
[root@localhost data]# cp -rp /usr/share/mysql/my-default.cnf /etc/my.cnf
# 在mysqld下面增加
init-connect='SET NAMES utf8'
character-set-server = utf8
[root@localhost data]# service mysql restart
[root@localhost data]# mysql -uroot -proot --驗證是否成功
mysql> show variables like 'character%'; show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
2.5 配置MySQL遠程訪問
CentOS 7.0默認使用的是firewall作為防火牆
[root@localhost data]# systemctl stop firewalld.service #停止firewall
[root@localhost data]# systemctl disable firewalld.service #禁止firewall開機啟動
[root@localhost data]# firewall-cmd --state #查看默認防火牆狀態(關閉后顯示notrunning,開啟后顯示running)
[root@localhost data]# mysql -uroot -proot
mysql> grant all privileges on *.* to root@'%' identified by 'root' WITH GRANT OPTION;
mysql> flush privileges;
2.6 查看mysql數據庫文件存儲位置
[root@localhost data]# mysql -uroot -proot
mysql> show global variables like "%datadir%";