Linux CentOS 7最新版mysql安装及问题解决

centos7最新版mysql安装及问题解决

环境

  • CentOS 7.2.1511 (64-bit)
  • Mysql 5.6.39

检测

检查 MySQL是否已经安装

yum list installed | grep mysql

卸载

如果有安装要先卸载已安装全部版本,卸载命令:

yum -y remove mysql-community-libs.x86_64

依次卸载MySQL所有相关依赖版本
注(例如):

mysql-community-client.x86_64
mysql-community-common.x86_64
mysql-community-libs.x86_64
mysql-community-release.noarch
mysql-community-server.x86_64

当结果显示为 Complete!即卸载完毕。
再次使用yum list installed | grep mysql命令检查没有任何结果输出则说明卸载完成。

卸载配置信息

删除MySQL相关配置信息

rm -rf /var/lib/mysql
rm /etc/my.cnf

检查是否删除干净

命令如下:

find / -name mysql

按上边命令查询出来的目录依次删除,在不影响其它软件的情况下一定要确保删除干净,不然会有很多意想不到的问题出现,比如password不更新,无法启动等。

卸载自启动

检查是否有自启动并删除:

chkconfig –list | grep -i mysql
chkconfig –del mysqld

依赖

安装MySQL依赖libaio

yum search libaio //检索相关信息
yum install libaio //安装依赖包

下载

下载 MySQL Yum Repository

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

如果提示-bash: wget: 未找到命令,请先执行 yum install wget 安装 wget

安装

添加 MySQL Yum Repository

添加 MySQL Yum Repository 到你的系统 repository 列表中,执行:

yum localinstall mysql-community-release-el7-5.noarch.rpm

如果中间有让选择确认的直接输入 y 就ok了,当结果显示为 Complete!则添加成功。

验证是否添加MySQL Yum Repository成功

yum repolist enabled | grep “mysql.-community.

可以看到如下内容:

[root@iz2ze7vr4n0kdynmuno8jqz bin]# yum repolist enabled | grep "mysql.*-community.*"
!mysql-connectors-community/x86_64 MySQL Connectors Community                45
!mysql-tools-community/x86_64      MySQL Tools Community                     55
!mysql56-community/x86_64          MySQL 5.6 Community Server               378

通过 Yum 来安装 MySQL

yum install mysql-community-server

Yum会自动安装MySQL与其他组件的依赖关系,本处我们默认安装的是5.6稳定版本,如果想安装其他版本,请参考文末【1】手动选择要启用 MySQL 版本。

启动

启动 MySQL Server

systemctl start mysqld

查看 MySQL Server 状态

systemctl status mysqld

关闭 MySQL Server

systemctl stop mysqld

测试

测试MySQL是否安装成功

mysql

通过MySQL命令可以进入MySQL命令行

[root@iz2ze7vr4n0kdynmuno8jqz bin]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 70
Server version: 5.6.39 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, 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> 

检测MySQL是否启动

ps -ef | grep mysql

[root@iz2ze7vr4n0kdynmuno8jqz bin]# ps -ef | grep mysql
root      7073 10838  0 19:41 pts/0    00:00:00 grep --color=auto mysql
root     19270 28882  0 Jan31 pts/1    00:00:00 tail -400f /var/log/mysqld.log
mysql    28654     1  0 Jan31 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql    28845 28654  0 Jan31 ?        00:00:29 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock

监听3306端口

netstat -anp | grep 3306

[root@iz2ze7vr4n0kdynmuno8jqz bin]# netstat -anp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      28845/mysqld 

至此MySQL数据库安装完成!

扩展

firewall-cmd方式防火墙设置

firewall-cmd –permanent –zone=public –add-port=3306/tcp
firewall-cmd –permanent –zone=public –add-port=3306/udp

从启防火墙使其生效

firewall-cmd –reload

检测防火墙是否生效

firewall-cmd –zone=public –query-port=3306/tcp

原始密码找回

方式1:

grep ‘temporary password’ /var/log/mysqld.log

方式2:

cat /root/.mysql_secret

MySQL忘记root密码解决方案(如果命令没有环境变量可以去/usr/bin目录执行)

方法1:
1 . 修改MySQL的登录设置,使用不检查权限的方式启动

vim /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
保存并且退出vim

3.重新启动mysqld

/etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]

4.登录并修改MySQL的root密码

/usr/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.23.56
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> USE mysql ;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET Password = password ( ‘new-password’ ) WHERE User = ‘root’ ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.01 sec)
mysql> exit

5.将MySQL的登录设置修改回来

vi /etc/my.cnf
将刚才在[mysqld]的段中加上的skip-grant-tables删除
保存并且退出vim

6.重新启动mysqld

/etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]

方法2:

  1. 用以下命令启动MySQL,以不检查权限的方式启动

    mysqld_safe –skip-grant-tables
    mysqld –skip-grant-tables

  2. 然后用空密码方式使用root用户登录MySQL

    mysql -u root

  3. 修改root用户的密码;

    update mysql.user set password=PASSWORD(‘新密码’) where User=’root’;
    flush privileges;
    重新启动MySQL,就可以使用新密码登录了。

开机自起

查看 MySQL 服务是否开机启动

systemctl is-enabled mysql.service;echo $?

如果是 enabled 则说明是开机自动,如果不是,执行

chkconfig –levels 235 mysqld on

设置字符集

查看数据库字符集

SHOW VARIABLES LIKE ‘character%’;

mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | latin1                     |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

服务器默认的字符器是 latin1 ,对中文不友好。

通过修改 /etc/my.cnf 文件,添加字符集的设置

[mysqld]   
character_set_server = utf8

[mysql]
default-character-set = utf8

重启 MySQL ,可以看到字符集已经修改了

mysql> 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)

其他常用配置配置

/etc/my.cnf 文件,常用配置如下:

[mysqld]   
basedir      = path          # 使用给定目录作为根目录(安装目录)。
datadir      = path          # 从给定目录读取数据库文件。
pid-file     = filename      # 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统);


socket = /tmp/mysql.sock     # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)
port             = 3306      # 指定MsSQL侦听的端口
key_buffer       = 384M      # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。
                               索引块是缓冲的并且被所有的线程共享,key_buffer的大小视内存大小而定。
table_cache      = 512       # 为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销
sort_buffer_size = 2M        # 每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。
                               注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MB
read_buffer_size = 2M        # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
query_cache_size = 32M       # 指定MySQL查询结果缓冲区的大小
read_rnd_buffer_size    = 8M # 改参数在使用行指针排序之后,随机读用的。
myisam_sort_buffer_size =64M # MyISAM表发生变化时重新排序所需的缓冲
thread_concurrency      = 8 # 最大并发线程数,取值为服务器逻辑CPU数量×2,如果CPU支持H.T超线程,再×2
thread_cache            = 8 # #缓存可重用的线程数
skip-locking                 # 避免MySQL的外部锁定,减少出错几率增强稳定性。
[mysqldump]
max_allowed_packet      =16M # 服务器和客户端之间最大能发送的可能信息包

问题

Host is not allowed to connect to this MySQL server解决方法

MySQL不允许远程连接,所以登录失败。

现在服务器本地登录数据库
执行use mysql;
执行update user set host = '%' where user = 'root';如果报错可以忽略
执行FLUSH PRIVILEGES;刷新权限相关表,不执行上边操作不会生效

Plugin ‘InnoDB’ init function returned error.

[ERROR] Plugin ‘InnoDB’ init function returned error.
[ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported table type: InnoDB
[ERROR] Aborting

解决办法:

删除log文件和data的初始化文件
运行mysql_install_db初始化数据库
再启动
注意: 修改数据目录的权限,要不容易出现“Can’t create test file /var/lib/mysql/Xiaojia.lower-test“ 这个问题。


[1]手动选择要启用 MySQL 版本

选择要启用 MySQL 版本.

查看 MySQL 版本,执行:

yum repolist all | grep mysql

可以看到默认开启的是最新稳定版5.6,其中5.5和5.7版本是禁用的

[root@iz2ze7vr4n0kdynmuno8jqz bin]# yum repolist all | grep mysql
!mysql-connectors-community/x86_64 MySQL Connectors Community     enabled:    45
mysql-connectors-community-source  MySQL Connectors Community - S disabled
!mysql-tools-community/x86_64      MySQL Tools Community          enabled:    55
mysql-tools-community-source       MySQL Tools Community - Source disabled
mysql55-community/x86_64           MySQL 5.5 Community Server     disabled
mysql55-community-source           MySQL 5.5 Community Server - S disabled
!mysql56-community/x86_64          MySQL 5.6 Community Server     enabled:   378
mysql56-community-source           MySQL 5.6 Community Server - S disabled
mysql57-community-dmr/x86_64       MySQL 5.7 Community Server Dev disabled
mysql57-community-dmr-source       MySQL 5.7 Community Server Dev disabled

可以通过命令语句来启动某个版本或者通过修改配置文件
命令:

yum-config-manager –disable mysql56-community
yum-config-manager –enable mysql57-community-dmr

修改配置文件/etc/yum.repos.d/mysql-community.repo

#Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

#Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

其中 enabled=0 是指禁用,enabled=1 指启用。

每次只能启动一个版本

查看当前的启动的 MySQL 版本

yum repolist enabled | grep mysql

查询MySQL安装目录

whereis mysql


https://www.cnblogs.com/adjk/p/6660453.html
http://blog.csdn.net/typa01_kk/article/details/49057073
http://blog.csdn.net/t1anyuan/article/details/70216235
https://zhidao.baidu.com/question/1737225715952181507.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值