进入https://dev.mysql.com/downloads/repo/yum/,下载RedHat Enterprise系统对应版本包。

点击链接Centos 6 直接下载。

点击链接Centos 7 直接下载。

centos 6 旧版本下载


官方文档:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

1、下载完成后将Yum库导入到你的本地:

  • centos 6

sudo yum localinstall mysql-community-release-el6-*.noarch.rpm

[root@localhost ~]# ls -la /etc/yum.repos.d/mysql-community*
-rw-r--r-- 1 root root 1209 2013/12/02 19:15:56 /etc/yum.repos.d/mysql-community.repo
-rw-r--r-- 1 root root 1060 2013/12/02 19:15:56 /etc/yum.repos.d/mysql-community-source.repo
  •  centos 7

sudo yum localinstall mysql80-community-release-el7-3.noarch.rpm

[root@localhost ~]# ls -la /etc/yum.repos.d/mysql-community*
-rw-r--r-- 1 root root 2076 2019/04/25 01:35:31 /etc/yum.repos.d/mysql-community.repo
-rw-r--r-- 1 root root 2108 2019/04/25 01:35:31 /etc/yum.repos.d/mysql-community-source.repo


2、这个Yum库包含了MySQLServer,MySQL工作台管理工具以及ODBC驱动,现在可以通过下面的命令简单地安装MySQLServer:

yum源开启相应版本,并安装:

[root@localhost ~]# cat /etc/yum.repos.d/mysql-community.repo

# 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=0    #enabled=0关闭本地更新模式
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1   #enabled=1开启本地更新模式
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
#上面开启mysql 5.7本地安装模式,所以安装版本为mysql5.7
yum install mysql-server mysql-client libmysqlclient-dev


3、启动初始化

  • centos 6

/etc/init.d/mysqld start
  • centos 7

systemctl start  mysqld.service


#查看初始密码

[root@localhost ~]# grep "temporary password" /var/log/mysqld.log
2018-05-08T09:08:56.884520Z 1 [Note] A temporary password is generated for root@localhost: a?dj#AqgN5yG

#mysql安全配置向导

[root@localhost ~]# mysql_secure_installation
Enter current password for root (enter for none):  <–初次运行直接回车
Set root password? [Y/n]   <– 是否设置root用户密码,输入y并回车或直接回车
Remove anonymous users? [Y/n]   <– 是否删除匿名用户,生产环境建议删除,所以直接回车
Disallow root login remotely? [Y/n]  <–是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止
Remove test database and access to it? [Y/n]   <– 是否删除test数据库,直接回车
Reload privilege tables now? [Y/n]   <– 是否重新加载权限表,直接回车

至此我就可以使用Yum简单地管理MySQL更新,并能确保总是从官网软件库得到最新的发布版。


4、mysql配置

# cat /etc/my.cnf

[client]
port = 3306
socket=/var/lib/mysql/mysql.sock

[mysqld]
bind_address=127.0.0.1
port = 3306
basedir = /usr
datadir=/var/lib/mysql
pid-file = /var/run/mysqld/mysqld.pid
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log

# time zone
default-time-zone = system
character-set-server = utf8
default-storage-engine = InnoDB

# skip options
skip-name-resolve
skip-symbolic-links
skip-external-locking
skip-slave-start

# res settings
back_log = 128   #接受队列
max_connections = 500   #最大并发连接数
max_connect_errors = 5000
#open_files_limit = 10240

connect-timeout = 10  #连接超时之前的最大秒数
wait-timeout = 28800 #等待关闭连接的时间
interactive-timeout = 28800

innodb_buffer_pool_size = 256M
innodb_log_file_size    = 256M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DSYNC
innodb_thread_concurrency = 0 #这里推荐设置为0不限制并发数,更好去发挥CPU多核处理能力,提高并发量

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqldump]
quick
max_allowed_packet = 64M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

更多mysql配置,请见 https://blog.51cto.com/qiangsh/1554822


5、重启mysql

  • centos 6

/etc/init.d/mysqld restart
  • centos 7

systemctl restart mysqld.service


6、开机启动

  • centos 6

chkconfig --level 2345 mysqld on
  • centos 7

systemctl enable mysqld.service


报错:

1、root password update failed

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement. 

解决办法:

[**@localhost ~]# mysql  
mysql> set global read_only=0;  
Query OK, 0 rows affected (0.00 sec)  
mysql> flush privileges;  
Query OK, 0 rows affected (0.00 sec)  
mysql> quit  
[**@localhost ~]# /usr/bin/mysql_secure_installation

如此便可以重新更新root密码了!


2、[ERROR] InnoDB: Cannot create log files because data files are corrupt or the database was not shut down cleanly after creating the data files.

解决办法:进入你的mysql数据存放目录,删除ibdata1文件即可,例如在我的环境下

#cd /var/lib/mysql  
#mv ibdata1 ibdata1.bak


3、[ERROR] InnoDB: space header page consists of zero bytes in data file ./ibdata1
解决办法:修改配置文件my.cnf

#根据个人环境空间大小和需求调节如下参数的值

innodb_buffer_pool_size = 256M  
innodb_log_file_size    = 256M  
innodb_thread_concurrency   = 16  
innodb_flush_log_at_trx_commit = 2  
#添加一条:
innodb_flush_method=normal

4、ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
解决办法:Google上有很多,我遇到这个情况的时候只是使用/usr/bin/mysql_secure_installation 重新设置一次。

5、ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

解决办法:http://www.cnblogs.com/visi_zhangyang/archive/2012/03/05/2380531.html