Linux下安装MySQL

网上找的Linux系统下Mysql安装教程大部分都是不完整,要么就是步骤凌乱,要不就是缺少步骤(例如需要开启防火墙授权访问端口),于是自己抽空整理了一份

前置工作:安装前先卸载系统自带版本(没有则可以跳过此步骤)

#查看系统自带版本
rpm -qa | grep mariadb
#卸载自带版本(多个需要逐个执行)
yum -y remove 版本1
yum -y remove 版本2
...

安装包:mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

下载地址:https://dev.mysql.com/downloads/mysql/

下载安装包:

查看历史发布版本,并根据系统选择对应的安装包下载,这里以mysql5.7,Linux64位系统为例(注:需要登录oracle账户下载)

处理安装包:

#进入此文件夹
cd /usr/local
#解压安装包
tar -zxvf apk/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C ./
#将解压文件重命名为mysql
mv mysql-5.7.31-linux-glibc2.12-x86_64/ mysql

准备工作:

#创建mysql用户组
groupadd mysql
#创建mysql用户
useradd -r -g mysql mysql
#修改mysql文件夹的归属用户组以及用户
chown -R mysql:mysql mysql/

编写mysql配置文件,在/etc下新建配置文件my.cnf,并进行以下配置

#mysql客户端配置
[client]
#端口号
port=3306
#socket文件目录(可创建多个实例)
socket=/var/lib/mysql/mysql.sock

[mysql]
no-auto-rehash
#允许单个记录写入最大数据量
max_allowed_packet=128M
default_character_set=utf8


#mysql服务端配置
[mysqld]
#端口号
port=3306
#登录用户
user=mysql
#默认字符集
character-set-server=utf8
#socket文件目录(可创建多个实例)
socket=/var/lib/mysql/mysql.sock
#跳过dns反向解析
skip-name-resolve
log-slave-updates
skip-external-locking
explicit_defaults_for_timestamp=true
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#表名是否区分大小写(0-区分,1-不区分)
lower_case_table_names=1

#安装目录
basedir=/usr/local/mysql
#数据存放目录
datadir=/usr/local/mysql/data
#数据临时存放目录
tmpdir=/usr/local/mysql/tmp
#异常日志记录文件
log-error=/usr/local/mysql/logs/error.log

#允许最大连接数
max_connections=1000
max_user_connections=1000
max_connect_errors=1000
wait_timeout=14400
interactive_timeout=100
connect_timeout=20
slave-net-timeout=30

#二进制文件存储目录
log-bin=/usr/local/mysql/logs/mysql-bin
#二进制文件格式
binlog_format=mixed
#二进制文件的最大值
max_binlog_size=128M
#二进制文件缓存大小
binlog_cache_size=1M
#二进制文件的有效天数
expire-logs-days=5
#并发连接数
back_log=500

#开启慢查询
slow-query-log
#慢查询记录文件
slow-query-log-file=/usr/local/mysql/logs/mysql-slow.log
#慢查询阈值
long_query_time=3
#使没有使用索引的慢查询也能记录到慢速日志里
#log_long_format

#其它配置
server-id=10001
max-relay-log-size=256M
relay-log=relay-bin
transaction_isolation=READ-COMMITTED

performance_schema=0
#myisam_recover
key_buffer_size=64M
#允许单个记录写入最大数据量
max_allowed_packet=16M
#table_cache=3096
table_open_cache=6144
table_definition_cache=4096

sort_buffer_size=128K
read_buffer_size=1M
read_rnd_buffer_size=1M
join_buffer_size=128K

myisam_sort_buffer_size=32M
tmp_table_size=32M
max_heap_table_size=64M
query_cache_type=0
query_cache_size=0
bulk_insert_buffer_size=32M

thread_cache_size=64
#thread_concurrency=32
thread_stack=192K
skip-slave-start

#InnoDB存储引擎
innodb_data_home_dir=/usr/local/mysql/data
innodb_log_group_home_dir=/usr/local/mysql/logs
innodb_data_file_path=ibdata1:1G:autoextend

innodb_buffer_pool_size=1G
innodb_buffer_pool_instances=8

#innodb_additional_mem_pool_size=16M

innodb_log_file_size=200M
innodb_log_buffer_size=16M
innodb_log_files_in_group=3

innodb_flush_log_at_trx_commit=0
innodb_lock_wait_timeout=10
innodb_sync_spin_loops=40

innodb_max_dirty_pages_pct=90
innodb_support_xa=0
innodb_thread_concurrency=0
innodb_thread_sleep_delay=500
#innodb_file_io_threads=4
innodb_concurrency_tickets=1000
log_bin_trust_function_creators=1
innodb_flush_method=O_DIRECT
innodb_file_per_table
innodb_read_io_threads=16
innodb_write_io_threads=16
innodb_io_capacity=2000
innodb_file_format=Barracuda
innodb_purge_threads=1
innodb_purge_batch_size=32
innodb_old_blocks_pct=75
innodb_change_buffering=all
innodb_stats_on_metadata=OFF


[myisamchk]
key_buffer_size=64M
sort_buffer_size=512k
read_buffer=2M
write_buffer=2M


[mysqlhotcopy]
interactive-timeout


[mysqld_safe]
#malloc-lib=/usr/local/mysql/lib/mysql/libjemalloc.so

创建my.cnf配置文件中所配置的目录并赋权限

mkdir /var/lib/mysql
chmod 777 /var/lib/mysql

mkdir -p /usr/local/mysql/{data,tmp,logs}
chmod 777 /usr/local/mysql

正式安装mysql服务:

#初始化
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
#查看初始密码
less logs/error.log

后置工作:

#配置启动脚本
cp ./support-files/mysql.server /etc/init.d/mysqld
#设置开机自启动
chkconfig mysqld on
#检查开机自启动
chkconfig --list mysqld

出现以下信息表明mysqld 服务已经⽣效了,在2、3、4、5运⾏级别随系统启动⽽⾃动启动,以后可以直接使⽤service命令控制mysql的启停。

#配置环境变量
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
#使配置生效
source /etc/profile
#启动mysql服务
service mysqld start

#登录mysql服务
mysql -uroot -p初始密码

#修改root用户密码
set password for root@'localhost' = password('study');
#启用远程主机登录
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;

注:要使远程能够登录访问还得进行“防火墙授权访问端口”,具体操作可查看https://www.cnblogs.com/54hsh/p/13355413.html

验证成果:

授权端口后可以用可视化工具测试远程是否能够连接,这里使用navicat

创建用户和数据库并赋权:

#创建用户
CREATE USER 'testuser'@'%' IDENTIFIED BY 'password';
#创建数据库
CREATE DATABASE IF NOT EXISTS test_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#授权库表
GRANT ALL PRIVILEGES ON test_db.* TO 'testuser'@'%' IDENTIFIED BY 'password';
#刷新权限
FLUSH PRIVILEGES;
原文地址:https://www.cnblogs.com/54hsh/p/13619618.html