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:
用以下命令启动MySQL,以不检查权限的方式启动
mysqld_safe –skip-grant-tables
mysqld –skip-grant-tables然后用空密码方式使用root用户登录MySQL
mysql -u root
修改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