二进制安装(无需编译)
①下载二进制包
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz
②添加用户
groupadd -g 27 mysql && useradd -g 27 -u 27 -M -s /sbin/nologin mysql
③解压
tar xzvf mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz -C /usr/local
④更改配置文件名
mv /usr/local/mysql-5.7.41-linux-glibc2.12-x86_64 /usr/local/mysql
⑤授权
chown -R mysql:mysql /usr/local/mysql
⑥创建日志文件及授权
touch /var/log/mysql.log && chown mysql:mysql /var/log/mysql.log
⑦编辑配置文件
vim /etc/my.cnf (原本配置全部注释,复制以下内容)
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
port=3306
default-storage-engine = innodb
innodb_large_prefix=on
innodb_file_per_table = on
max_connections = 10000
collation-server = utf8_general_ci
character_set_server=utf8
user=mysql
[client]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
default-character-set = utf8
[mysqld_safe]
log-error=/var/log/mysql.log
#参数解释
#这些MySQL配置的参数含义如下:
[mysqld]
#mysql服务相关的配置
basedir=/usr/local/mysql #MySQL安装目录
datadir=/usr/local/mysql/data #数据库数据文件存放目录
socket=/usr/local/mysql/data/mysql.sock #MySQL使用的Unix socket文件路径;mysql socket的作用:用于应用程序间的通信。让本地客户端优先使用socket文件连接,获得更好的性能。限制只有有权限访问该socket文件的进程才能连接MySQL,提高安全性
port=3306 #MySQL监听的TCP/IP 端口号
default-storage-engine = innodb #默认的存储引擎,这里使用的是Innodb
innodb_large_prefix=on #启用Innodb的大VARCHAR和TEXT列,开启后支持更长的列和索引;不开启此参数时,InnoDB支持的VARCHAR最大长度为255字节,TEXT最大长度为65535字节。开启此参数后,InnoDB支持的VARCHAR最大长度提升到65535字节,TEXT最大长度提升到163830字节。
innodb_file_per_table = on #开启每个表使用单独的表空间文件
max_connections = 10000 #最大允许的并发连接数
collation-server = utf8_general_ci #设置MySQL服务器(全局)的默认字符集和校对规则。utf8:表示字符集为utf8,可以表示绝大部分的国际字符;_general_ci:表示校对规则为utf8_general_ci, 其中:general:表示最常用的比较规则,ci:表示忽略字符大小写(case insensitive)
character_set_server=utf8 #设置了MySQL服务器(整个实例)的默认字符集。
#MySQL支持很多种字符集,例如:
utf8:多字节字符集,支持绝大部分国际字符
latin1:单字节字符集,只支持西欧语言字符
gbk:支持简体中文字符
big5:支持繁体中文字符
user=mysql #MySQL服务运行的用户
[client]
#客户端配置
port = 3306 #(在[client]部分)表示客户端连接MySQL时使用的端口
socket = /usr/local/mysql/data/mysql.sock
#(在[client]部分)表示客户端连接MySQL时使用的Unix socket文件路径
default-character-set = utf8
#(在[client]部分) 表示客户端连接时使用的默认字符集
[mysqld_safe]
#[mysqld_safe]部分是针对MySQL的mysqld_safe启动脚本的配置
log-error=/var/log/mysql.log
#指定mysqld_safe脚本的日志文件路径为/var/log/mysql.log。
⑧添加环境变量
cat >>/etc/profile
export PATH=${PATH}:/usr/local/mysql/bin
EOF
source /etc/profile (加载 /etc/profile 文件中的环境变量和配置的命令)
⑨初始化数据库
(随机密码,在最后一行)
mysqld --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql
⑩添加启动脚本
vim /usr/lib/systemd/system/mysql.service(编辑以下内容)
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=MySQL :: MySQL 8.1 Reference Manual :: 2.5.9 Managing MySQL Server with systemd
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000 #设置操作系统默认允许mysql进程最大打开文件的数量
⑪更新自启动服务,查看工作端口
#重新加载systemd管理器的unit配置文件
systemctl daemon-reload
systemctl enable --now mysql.service
systemctl restart mysql
systemctl enable --now mysql
netstat -ntpl | grep "3306"
⑫登陆mysql
systemctl restart mysql
mysql -u root -p"aka.jpy#q9rT"
⑬修改密码
alter user 'root'@'localhost' identified by '123456'; #修改密码为123456
flush privileges; 刷新
或者:mysqladmin -uroot -p'旧密码' password '新密码'