准备工作
卸载老版本MySQL
rpm -qa|grep mariadb // 查询出来已安装的mariadb
rpm -e --nodeps 文件名 // 卸载mariadb,文件名为上述命令查询出来的文件
rpm -qa|grep mysql // 查询出来已安装的mysql
rpm -e --nodeps 文件名 // 卸载mysql,文件名为上述命令查询出来的文件
或者下边一条命令
find / -name mysql|xargs rm -rf
下载MySql5.6
1.去官网下载 mysql-5.6.46-linux-glibc2.12-x86_64.tar
将下载的mysql-5.6.46-linux-glibc2.12-x86_64.tar上传到服务器【eg: /usr/local 目录下】
进入上传mysql文件目录
cd /usr/local
解压mysql安装包
tar -zxvf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
重命名解压后的文件
mv mysql-5.6.46-linux-glibc2.12-x86_64 mysql
安装与配置
创建mysql用户组和mysql用户
先检查是否存在mysql用户组和mysql用户
groups mysql
若不存在,则添加;
groupadd mysql useradd -r -g mysql mysql
赋予权限
进入mysql目录
cd /usr/local/mysql
赋予mysql用户该目录的权限
chown -R mysql:mysql ./
通过脚本安装
./scripts/mysql_install_db --user=mysql
修改当前目录拥有者为root用户
chown -R root:root ./
修改data目录拥有者为mysql
chown -R mysql:mysql data
更改root密码
启动mysql【若当前目录不是mysql目录,需先进入mysql目录】
./support-files/mysql.server start
更改密码
./bin/mysqladmin -u root -h localhost.localdomain password 'testpassword'
查看密码是否修改成功
mysql -uroot -p
输入密码
若连接成功,则密码修改成功
更改环境变量
vi /etc/profile
按 i 进入insert模式,在profile文件末尾添加以下配置
export PATH="/usr/local/mysql/bin:$PATH"
最后执行以下语句,使之立即生效
source /etc/profile
打开远程权限
登陆mysql后执行以下语句:
grant all privileges on *.* to root@'%' identified by 'root';
flush privileges;
或
use mysql;
select host, user from user;
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;
将MySQL加入Service系统服务
进入mysql目录
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
//重启mysql
service mysqld restart
//关闭mysql
service mysqld stop
//启动mysql
service mysqld start
service mysqld status
etc下添加my.cnf
cd /etc
vi my.cnf
按i 进入insert模式
添加如下配置:
[mysql]
default-character-set=utf8
socket=/tmp/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端口
port = 3306
socket=/tmp/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=500
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_name=1
max_allowed_packet=300M
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
按esc :wq保存并退出
重启下mysql: service mysqld restart
MySql性能优化
修改my.cnf配置文件
修改默认存储引擎: default-storage-engine=INNODB
key_buffer_size = 256M
#key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。对于内存在4GB左右的服务器该参数可设置为256M或384M。注意:该参数值设置的过大反而会是服务器整体效率降低!
max_allowed_packet = 20M
#可以控制其通信缓冲区的最大长度,所以当缓冲区的大小太小的时候,导致某些查询和批量插入操作报错。
bulk_insert_buffer_size = 120M
# 批量插入缓存大小, 这个参数是针对MyISAM存储引擎来说的。适用于在一次性插入100-1000+条记录时, 提高效率。默认值是8M。可以针对数据量的大小,翻倍增加。
thread_stack = 256K 每个连接分配的内存
table_cache = 64 连接池数量
#设置了连接池 1G —>8 2G —>16 3G —>32 4G —> 64
sort_buffer_size = 6M
#查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占,如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。
read_buffer_size = 4M
#读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
join_buffer_size = 8M
#联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
myisam_sort_buffer_size = 64M
table_cache = 512
query_cache_size = 64M
tmp_table_size = 256M
# MySQL的heap(堆积)表缓冲大小。所有联合在一个DML指令内完成,并且大多数联合甚至可以不用临时表即可以完成。
max_connections = 768
#指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提 示,则需要增大该参数值。
max_connect_errors = 10000000
# 对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接
wait_timeout = 10
#指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。
skip-networking
#开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!
table_cache=1024
#物理内存越大,设置就越大.默认为2402,调到512-1024最佳
innodb_additional_mem_pool_size=4M
#默认为2M
innodb_flush_log_at_trx_commit=1
#设置为0就是等到innodb_log_buffer_size列队满后再统一储存,默认为1
innodb_log_buffer_size=2M
#默认为1M
innodb_thread_concurrency=8
#你的服务器CPU有几个就设置为几,建议用默认一般为8
key_buffer_size=256M
#默认为218,调到128最佳
tmp_table_size=64M
#默认为16M,调到64-256最挂
read_buffer_size=4M
#默认为64K
read_rnd_buffer_size=16M
#默认为256K
sort_buffer_size=32M
#默认为256K
thread_cache_size=120
#默认为60
query_cache_size=32M