#MySQL5.7 安装
#卸载自带残留的mysql,或文件夹
rpm -qa | grep mysql
find - / -name mysql
#上传解压MySQL包,tar包
tar -xvf mysql-5.7.XX-linux-glibc2.12-x86_64.tar.xz
#复制解压后的文件到 /inspur命名mysql
cp -r mysql-5.7.XX-linux-glibc2.12-x86_64 /inspur/mysql
#创建mysql配置存放目录data
cd /inspur/mysql
mkdir data
#创建mysql用户组和用户
groupadd mysql
useradd -r -g mysql mysql
#为MySQL目录修改用户权限
chown -R mysql:mysql /inspur/mysql/
#配置mysql(my.cnf),上传或修改后初始化
vim /etc/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
basedir = /inspur/mysql
datadir = /inspur/mysql/data
port = 3306
socket = /tmp/mysql.sock
tmpdir = /inspur/mysql/tmp
lower_case_table_names = 1
max_connections = 3000
open_files_limit = 65535
server_id = 1
log-bin = mysql-bin
binlog_format=mixed
#expire-logs-days=90
relay_log=mysqld-relay-bin
log-slave-updates=ON
#auto-increment-increment = 10
##auto-increment-offset = 2
#是否启用慢查询日志,1为启用,0为禁用
slow_query_log = 1
#指定慢查询日志文件的路径和名字,可使用绝对路径指定;默认值是'主机名_slow.log',位于datadir目录
slow_query_log_file = slow.log
#指定达到多少秒才算慢查询
long_query_time = 3
#SQL语句检测的记录数少于设定值的语句不会被记录到慢查询日志,即使这个语句执行时间超过了long_query_time的阈值
#min_examined_row_limit = 100
#记录没有使用索引的查询语句。!可能导致日志文件激增,谨慎使用。配合log_throttle_queries_not_using_indexes 使用。
#log_queries_not_using_indexes=on
#表示每分钟允许记录到slow log的且未使用索引的sql语句次数。配合long_queries_not_using_indexes开启使用。
#log_throttle_queries_not_using_indexes = 10
log_bin_trust_function_creators=1
explicit_defaults_for_timestamp=true
skip-name-resolve
skip-external-locking
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#innodb settings
innodb_file_per_table=1
#70-80 percent of system memory
innodb_buffer_pool_size =24G
#MySQL在完成某些join(连接)需求的时候,为了减少参与join的“被驱动表”的读取次数以提高性能,需要使用到join buffer来协助完成join操作,当join buffer 太小,MySQL不会将该buffer存入磁盘文件而是将join buffer中的结果与需求join的表进行操作,然后清空join buffer中的数据,继续将剩余的结果集写入次buffer中
join_buffer_size = 512M
#MySQL读入缓冲区的大小
read_buffer_size = 64M
#MySQL的随机读缓冲区大小
read_rnd_buffer_size = 512M
#MySQL的顺序读缓冲区大小
sort_buffer_size = 32M
#三个取值:0,1,2,分别代表了off、on、demand
query_cache_type = 1
query_cache_size = 512M
innodb_log_buffer_size = 64M
key_buffer_size = 512M
max_allowed_packet = 128M
[mysqldump]
all-databases
my.cnf读取顺序
/etc/my.cnf > /etc/mysql/my.cnf > /usr/etc/my.cnf > ~/.my.cnf
#加入MySQL开机自启
cd /inspur/mysql
cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql //添加可执行权限
chkconfig --add mysql //添加开机自启
chkconfig --list //查看自启是否添加成功
#环境变量
vim /etc/profile
export PATH=$PATH:/inspur/mysql/bin:/inspur/mysql/lib
#重新加载
source /etc/profile
#初始化(初始化之前先配置my.cnf)
cd /mysql/bin
./mysqld --user=mysql --initialize --basedir=/inspur/mysql --datadir=/inspur/mysql/data
#记录初始密码 2sRud7xV>sf+
#可能会出现的问题
1、/inspur/mysql/tmp #可能需要创建 tmp 文件夹,并授权tmp文件夹
chmod 775 tmp/
2、MySQL登录无路径,建一个软连接
ln -s /inspur/mysql/bin/mysql /usr/bin # /inspur/mysql 为安装路径
3、/inspur/mysql/data # 初始化的时候 data 文件夹里需要为空
#重启mysql
service mysql start
systemctl restart mysql
#修改密码
ALTER user 'root'@'localhost'IDENTIFIED WITH mysql_native_password BY 'Ua6sh4io#dHa3_lk2jfd';
#给远程登录权限
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'ZvPJ5Ss11ZgmNFGt';
grant all privileges on *.* to 'root'@'%' identified by 'ZvPJ5Ss11ZgmNFGt';
flush privileges;
5.7修改密码
方法1: 用SET PASSWORD命令
首先登录MySQL。
例子:mysql> set password for root@localhost = password('123');
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
赋权之后用工具就可以改密码了
MySQL 远程连接慢
my.cnf里面添加
[mysqld]
skip-name-resolve # 一般我们只要这一项便可以
skip-grant-tables