CentOS7 MySQL安裝 及遇到的常見問題
首先安裝了 MySQL 5.5 後面版本不對 導致很多問題 腦子一轉 又裝了個當前最新 5.7 發現還是版本不對 各種so找不到或者 符號未定義 最後全卸掉裝5.6,終於可以了 前後折騰兩三天 (本文整理自網絡,自己一路踩坑過來 行之有效)
首先 卸載老版本MySQL
rpm -qa | grep -i mysql // 查看命令1
yum list install mysql* // 查看命令2
卸載由yum 安裝的MySQL yum list 列出來的什麽 就通過 yum remove 對應的項目名稱卸載掉 知道 list 不出來啥了
然後通過下面安裝 MySQL 5.6
[root@iZuf67u6816pmg3fc1bx5fZ ~]# rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm Retrieving http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm Preparing... ################################# [100%] Updating / installing... 1:mysql-community-release-el7-5 ################################# [100%] [root@iZuf67u6816pmg3fc1bx5fZ ~]# yum repolist enabled | grep "mysql.*-community.*" mysql-connectors-community/x86_64 MySQL Connectors Community 42 mysql-tools-community/x86_64 MySQL Tools Community 51 mysql56-community/x86_64 MySQL 5.6 Community Server 344[root@iZuf67u6816pmg3fc1bx5fZ ~]# [root@iZuf67u6816pmg3fc1bx5fZ ~]# [root@iZuf67u6816pmg3fc1bx5fZ ~]# [root@iZuf67u6816pmg3fc1bx5fZ ~]# yum -y install mysql-community-server Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package mysql-community-server.x86_64 0:5.6.37-2.el7 will be installed --> Processing Dependency: mysql-community-common(x86-64) = 5.6.37-2.el7 for package: mysql-community-server-5.6.37-2.el7.x86_64 --> Processing Dependency: mysql-community-client(x86-64) >= 5.6.10 for package: mysql-community-server-5.6.37-2.el7.x86_64 --> Processing Dependency: perl(Data::Dumper) for package: mysql-community-server-5.6.37-2.el7.x86_64 --> Processing Dependency: perl(DBI) for package: mysql-community-server-5.6.37-2.el7.x86_64 --> Running transaction check ---> Package mariadb.x86_64 1:5.5.52-1.el7 will be obsoleted ---> Package mysql-community-client.x86_64 0:5.6.37-2.el7 will be obsoleting --> Processing Dependency: mysql-community-libs(x86-64) >= 5.6.10 for package: mysql-community-client-5.6.37-2.el7.x86_64 ---> Package mysql-community-common.x86_64 0:5.6.37-2.el7 will be installed ---> Package perl-DBI.x86_64 0:1.627-4.el7 will be installed --> Processing Dependency: perl(RPC::PlServer) >= 0.2001 for package: perl-DBI-1.627-4.el7.x86_64 --> Processing Dependency: perl(RPC::PlClient) >= 0.2000 for package: perl-DBI-1.627-4.el7.x86_64 ---> Package perl-Data-Dumper.x86_64 0:2.145-3.el7 will be installed --> Running transaction check ---> Package mariadb-libs.x86_64 1:5.5.52-1.el7 will be obsoleted ---> Package mysql-community-libs.x86_64 0:5.6.37-2.el7 will be obsoleting ---> Package perl-PlRPC.noarch 0:0.2020-14.el7 will be installed --> Processing Dependency: perl(Net::Daemon) >= 0.13 for package: perl-PlRPC-0.2020-14.el7.noarch --> Processing Dependency: perl(Net::Daemon::Test) for package: perl-PlRPC-0.2020-14.el7.noarch --> Processing Dependency: perl(Net::Daemon::Log) for package: perl-PlRPC-0.2020-14.el7.noarch --> Processing Dependency: perl(Compress::Zlib) for package: perl-PlRPC-0.2020-14.el7.noarch --> Running transaction check ---> Package perl-IO-Compress.noarch 0:2.061-2.el7 will be installed --> Processing Dependency: perl(Compress::Raw::Zlib) >= 2.061 for package: perl-IO-Compress-2.061-2.el7.noarch --> Processing Dependency: perl(Compress::Raw::Bzip2) >= 2.061 for package: perl-IO-Compress-2.061-2.el7.noarch ---> Package perl-Net-Daemon.noarch 0:0.48-5.el7 will be installed --> Running transaction check ---> Package perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 will be installed ---> Package perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved =============================================================================================================================================== Package Arch Version Repository Size =============================================================================================================================================== Installing: mysql-community-client x86_64 5.6.37-2.el7 mysql56-community 19 M replacing mariadb.x86_64 1:5.5.52-1.el7 mysql-community-libs x86_64 5.6.37-2.el7 mysql56-community 2.0 M replacing mariadb-libs.x86_64 1:5.5.52-1.el7 mysql-community-server x86_64 5.6.37-2.el7 mysql56-community 59 M Installing for dependencies: mysql-community-common x86_64 5.6.37-2.el7 mysql56-community 257 k perl-Compress-Raw-Bzip2 x86_64 2.061-3.el7 base 32 k perl-Compress-Raw-Zlib x86_64 1:2.061-4.el7 base 57 k perl-DBI x86_64 1.627-4.el7 base 802 k perl-Data-Dumper x86_64 2.145-3.el7 base 47 k perl-IO-Compress noarch 2.061-2.el7 base 260 k perl-Net-Daemon noarch 0.48-5.el7 base 51 k perl-PlRPC noarch 0.2020-14.el7 base 36 k Transaction Summary =============================================================================================================================================== Install 3 Packages (+8 Dependent packages) Total download size: 82 M Downloading packages: warning: /var/cache/yum/x86_64/7/mysql56-community/packages/mysql-community-common-5.6.37-2.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Public key for mysql-community-common-5.6.37-2.el7.x86_64.rpm is not installed (1/11): mysql-community-common-5.6.37-2.el7.x86_64.rpm | 257 kB 00:00:00 (2/11): mysql-community-libs-5.6.37-2.el7.x86_64.rpm | 2.0 MB 00:00:01 (3/11): perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm | 32 kB 00:00:00 (4/11): perl-Compress-Raw-Zlib-2.061-4.el7.x86_64.rpm | 57 kB 00:00:00 (5/11): perl-Data-Dumper-2.145-3.el7.x86_64.rpm | 47 kB 00:00:00 (6/11): perl-IO-Compress-2.061-2.el7.noarch.rpm | 260 kB 00:00:00 (7/11): perl-Net-Daemon-0.48-5.el7.noarch.rpm | 51 kB 00:00:00 (8/11): perl-PlRPC-0.2020-14.el7.noarch.rpm | 36 kB 00:00:00 (9/11): perl-DBI-1.627-4.el7.x86_64.rpm | 802 kB 00:00:00 (10/11): mysql-community-client-5.6.37-2.el7.x86_64.rpm | 19 MB 00:00:07 (11/11): mysql-community-server-5.6.37-2.el7.x86_64.rpm | 59 MB 00:00:16 ----------------------------------------------------------------------------------------------------------------------------------------------- Total 4.2 MB/s | 82 MB 00:00:19 Retrieving key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Importing GPG key 0x5072E1F5: Userid : "MySQL Release Engineering <[email protected]>" Fingerprint: a4a9 4068 76fc bd3c 4567 70c8 8c71 8d3b 5072 e1f5 Package : mysql-community-release-el7-5.noarch (installed) From : file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Running transaction check Running transaction test Transaction test succeeded Running transaction Warning: RPMDB altered outside of yum. Installing : mysql-community-common-5.6.37-2.el7.x86_64 1/13 Installing : perl-Data-Dumper-2.145-3.el7.x86_64 2/13 Installing : mysql-community-libs-5.6.37-2.el7.x86_64 3/13 Installing : mysql-community-client-5.6.37-2.el7.x86_64 4/13 Installing : perl-Net-Daemon-0.48-5.el7.noarch 5/13 Installing : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64 6/13 Installing : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64 7/13 Installing : perl-IO-Compress-2.061-2.el7.noarch 8/13 Installing : perl-PlRPC-0.2020-14.el7.noarch 9/13 Installing : perl-DBI-1.627-4.el7.x86_64 10/13 Installing : mysql-community-server-5.6.37-2.el7.x86_64 11/13 Erasing : 1:mariadb-5.5.52-1.el7.x86_64 12/13 Erasing : 1:mariadb-libs-5.5.52-1.el7.x86_64 13/13 Verifying : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64 1/13 Verifying : perl-Data-Dumper-2.145-3.el7.x86_64 2/13 Verifying : perl-IO-Compress-2.061-2.el7.noarch 3/13 Verifying : mysql-community-libs-5.6.37-2.el7.x86_64 4/13 Verifying : mysql-community-common-5.6.37-2.el7.x86_64 5/13 Verifying : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64 6/13 Verifying : mysql-community-server-5.6.37-2.el7.x86_64 7/13 Verifying : perl-Net-Daemon-0.48-5.el7.noarch 8/13 Verifying : perl-DBI-1.627-4.el7.x86_64 9/13 Verifying : mysql-community-client-5.6.37-2.el7.x86_64 10/13 Verifying : perl-PlRPC-0.2020-14.el7.noarch 11/13 Verifying : 1:mariadb-5.5.52-1.el7.x86_64 12/13 Verifying : 1:mariadb-libs-5.5.52-1.el7.x86_64 13/13 Installed: mysql-community-client.x86_64 0:5.6.37-2.el7 mysql-community-libs.x86_64 0:5.6.37-2.el7 mysql-community-server.x86_64 0:5.6.37-2.el7 Dependency Installed: mysql-community-common.x86_64 0:5.6.37-2.el7 perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 perl-DBI.x86_64 0:1.627-4.el7 perl-Data-Dumper.x86_64 0:2.145-3.el7 perl-IO-Compress.noarch 0:2.061-2.el7 perl-Net-Daemon.noarch 0:0.48-5.el7 perl-PlRPC.noarch 0:0.2020-14.el7 Replaced: mariadb.x86_64 1:5.5.52-1.el7 mariadb-libs.x86_64 1:5.5.52-1.el7 Complete! [root@iZuf67u6816pmg3fc1bx5fZ ~]# systemctl enable mysqld [root@iZuf67u6816pmg3fc1bx5fZ ~]# systemctl start mysqld [root@iZuf67u6816pmg3fc1bx5fZ ~]# [root@iZuf67u6816pmg3fc1bx5fZ ~]# [root@iZuf67u6816pmg3fc1bx5fZ ~]# [root@iZuf67u6816pmg3fc1bx5fZ ~]# [root@iZuf67u6816pmg3fc1bx5fZ ~]# [root@iZuf67u6816pmg3fc1bx5fZ ~]# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it, we‘ll need the current password for the root user. If you‘ve just installed MySQL, and you haven‘t set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES) Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation. Set root password? [Y/n] Y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y ... Success! Normally, root should only be allowed to connect from ‘localhost‘. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y ... Success! By default, MySQL comes with a database named ‘test‘ that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Y - Dropping test database... ERROR 1008 (HY000) at line 1: Can‘t drop database ‘test‘; database doesn‘t exist ... Failed! Not critical, keep moving... - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y ... Success! All done! If you‘ve completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL! Cleaning up... [root@iZuf67u6816pmg3fc1bx5fZ ~]# [root@iZuf67u6816pmg3fc1bx5fZ ~]# [root@iZuf67u6816pmg3fc1bx5fZ ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 14 Server version: 5.6.37 MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ rows in set (0.00 sec) mysql>
FAQ:
1、 Invalid default value for ‘CREATE_TIME‘ 這是因為MySQL 5.6以後timestamp設定默認值規則改變,不能為”0000 00-00 00:00:00”
首先查看sql_mode:
mysql> show session variables like ‘%sql_mode%‘;
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
修改sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE:
mysql> set sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> commit;
這種方法重啟就失效了 如果需要永久有效需要在/etc/my.cnf 也就是MySQL的配置文件中指定
[mysqld]
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
然後重啟 mysql 就可以了
2、如何查看是否使用了指定目錄的my.cnf
啟動mysql後,我們查看mysql的進程,看看是否有設置使用指定目錄的my.cnf文件,如果有則表示mysql啟動時是加載了這個配置文件。
命令 ps aux|grep mysql|grep ‘my.cnf‘
輸出
1 2 |
fdipzone 25174 0.0 0.0 3087244 600 ?? S 4:12下午 0:01.14 /usr/ local /Cellar/mysql/5.6.24/bin/mysqld --defaults-file=/usr/local/Cellar/mysql/5.6.24/my.cnf --basedir=/usr/local/Cellar/mysql/5.6.24 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/5.6.24/lib/plugin --bind-address=127.0.0.1 --log-error=/usr/local/var/mysql/TerrydeMacBook-Air.local.err --pid-file=/usr/local/var/mysql/TerrydeMacBook-Air.local.pid
fdipzone 25064 0.0 0.0 2452824 4 ?? S 4:12下午 0:00.03 /bin/sh /usr/ local /opt/mysql/bin/mysqld_safe --defaults-file=/usr/local/Cellar/mysql/5.6.24/my.cnf --bind-address=127.0.0.1 --datadir=/usr/local/var/mysql
|
可以看到/usr/local/Cellar/mysql/5.6.24/my.cnf就是mysql啟動加載的配置文件。如果上面的命令沒有輸出,表示沒有設置使用指定目錄的my.cnf。
查看mysql默認讀取my.cnf的目錄
如果沒有設置使用指定目錄的my.cnf,mysql啟動時會讀取安裝目錄根目錄及默認目錄下的my.cnf文件。查看mysql啟動時讀取配置文件的默認目錄
命令 mysql --help|grep ‘my.cnf‘
輸出
1 2 3 |
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/ local /etc/my.cnf ~/.my.cnf
/etc/my.cnf, /etc/mysql/my.cnf, /usr/ local /etc/my.cnf, ~/.my.cnf
|
這些就是mysql默認會搜尋my.cnf的目錄,順序排前的優先。
啟動時沒有使用配置文件
如果沒有設置使用指定目錄my.cnf文件及默認讀取目錄沒有my.cnf文件,表示mysql啟動時並沒有加載配置文件,而是使用默認配置。需要修改配置,可以在mysql默認讀取的目錄中,創建一個my.cnf文件(例如:/etc/my.cnf),把需要修改的配置內容寫入,重啟mysql後即可生效。
3、mysql遠程連接 Host * is not allowed to connect to this MySQL server
mysql -u root -p mysql>use mysql; mysql>update user set host =’%‘where user =’root’; mysql>flush privileges; 具體分析 1、在本機登入mysql後,更改“mysql”數據庫裏的“user”表裏的“host”項,從”localhost”改為‘%‘。 mysql> mysql>use mysql; mysql>select ‘host‘ from user where user=‘root‘; #查看mysql庫中的user表的host值(即可進行連接訪問的主機/IP名稱) mysql>update user set host = ‘%‘ where user =‘root‘; #修改host值(以通配符%的內容增加主機/IP地址,當然也可以直接增加某個特定IP地址,如果執行update語句時出現ERROR 1062 (23000): Duplicate entry ‘%-root‘ for key ‘PRIMARY‘ 錯誤,需要select host from user where user = ‘root‘; 查看一下host是否已經有了%這個值,如果有了直接執行下面的flush privileges;即可) mysql>flush privileges; mysql>select host,user from user where user=‘root‘; mysql>quit
4、ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
啟動mysql =》service mysqld start 出現這個錯誤 首先停止mysql服務 service mysqld stop
再以不檢查權限的方式啟動 mysqld --skip-grant-tables &
又出現以下錯誤:
[ERROR] Fatal error: Please read “Security” section of the manual to find out how to run mysqld as root!
執行命令以root權限啟動
mysqld --user=root --skip-grant-tables &
登錄mysql mysql –uroot
設置密碼
UPDATE mysql.user SET authentication_string=PASSWORD(‘密碼‘) where USER=‘root‘;
ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘密碼‘;
SET PASSWORD FOR root=PASSWORD(‘密碼‘);
flush privileges; // 刷新設置立即生效
exit // 退出,或者使用 quit 命令
再次進入
mysql -uroot –p // 會提示輸入密碼 成功則密碼設置完成了
設置root權限的遠程訪問
grant all privileges on *.* to root@"%" identified by "密碼";
flush privileges; // 刷新設置立即生效
額外學習點 systemctl 好像蠻好用的樣子
systemctl is-enabled iptables.service
systemctl is-enabled servicename.service #查詢服務是否開機啟動
systemctl enable *.service #開機運行服務
systemctl disable *.service #取消開機運行
systemctl start *.service #啟動服務
systemctl stop *.service #停止服務
systemctl restart *.service #重啟服務
systemctl reload *.service #重新加載服務配置文件
systemctl status *.service #查詢服務運行狀態
systemctl --failed #顯示啟動失敗的服務
CentOS7 MySQL安裝 及遇到的常見問題