linux环境部署--MySQL5.7二进制源码文件安装
linux环境部署--MySQL5.7二进制源码文件安装
mysql-5.7.11-Linux-glibc2.5-x86_64.tar.gz 提取码:1999
MySQL5.7卸载
1、将安装包解压到 /usr/local/
sudo tar zxvf mysql-5.7.11-Linux-glibc2.5-x86_64.tar.gz -C /usr/local/
2、解压后为了方便后面操作可把解压后文件名修改为mysql
进入目标目录cd /usr/local/mysql-5.7.11-linux-glibc2.5-x86_64/
剪切修改文件名mv mysql-5.7.11-linux-glibc2.5-x86_64/ mysql
3、进入 support-files目录
cd /usr/local/mysql/support-files/
4、修改 my-default.cnf
[client]
port=3306
socket = /tmp/mysql.sock
loose-default-character-set = utf8
[mysqld]
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket = /tmp/mysql.sock
wait_timeout=2880000
interactive_timeout = 2880000
max_allowed_packet = 256M
sort_buffer_size = 8M
max_connections=2000
max_user_connections=800
default-storage-engine=INNODB
lower_case_table_names=1
character-set-server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqldump]
quick
max_allowed_packet = 256M
[mysql]
no-auto-rehash
default-character-set=utf8
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
[mysqlhotcopy]
interactive-timeout
参数
- max_connections
允许的同时客户的数量。增加该值增加 mysqld 要求的文件描述符的数量。这个数字应该增加,否则,你将经常看到 Too many connections 错误。 默认数值是100
- socket
参数的作用是指定MySQL服务监听的Unix套接字文件路径。通过该套接字连接MySQL服务,可以使用本机上的客户端工具与MySQL进行通信,而不需要经过网络传输。
- loose-default-character-set
参数是用来指定MySQL数据库默认字符集的。与default-character-set参数不同的是,loose-default-character-set参数可以被外部程序随时改变它的值,同时如果该参数未被正式设置,其缺省值将会是由MySQL二进制可执行文件自身决定的字符集编码。
- port
端口:默认3306
- basedir
安装路径
- datadir
数据路径
- wait_timeout
用于指定一个客户端连接在没有任何活动后需要等待的秒数,之后该连接就会被自动关闭。
- interactive_timeout
用于指定当客户端连接处于交互状态时(即有命令正在执行),多长时间内没有活动就会自动关闭该连接。
- interactive_timeout
用于指定排序时使用的缓冲区大小
- max_user_connections
用于限制一个用户在同一时间内最多可以创建的连接数。当一个用户尝试创建超过max_user_connections个连接时,MySQL会拒绝该用户的连接请求并给出错误提示。
- default-storage-engine
指定默认的存储引擎
- lower_case_table_names
用于指定在创建数据库和表名时是否强制将名字转换为小写。该变量的值可以是0、1或2
-- 0:不将数据库名和表名转换为小写,区分大小写。
-- 1:将数据库名和表名转换为小写,不区分大小写。
-- 2:将数据库名转换为小写,在存储表名时保留原始大小写,区分大小写。
需要注意的是,如果启用了lower_case_table_names=1,则在创建表时使用大写字母或者混合大小写命名可能导致意外的错误,因为MySQL将所有表名都转换为小写。
- sql_mode
它决定了 MySQL 在执行 SQL 语句时所遵循的规则和标准,包括如何处理数据、如何比较字符串、如何处理 NULL 值等等。下面是一些常见的 sql_mode 参数及其作用:
STRICT_TRANS_TABLES:强制 MySQL 执行事务时使用严格的表模式。当这个参数设置为 ON 时,如果插入的数据不符合表定义的类型,MySQL 会报错而不是插入默认值或截断数据。
NO_AUTO_CREATE_USER:禁止 MySQL 在 CREATE USER 语句中自动创建用户。当这个参数设置为 ON 时,如果你在 CREATE USER 语句中指定了不存在的用户,MySQL 不会自动创建该用户,而是报错。
NO_ENGINE_SUBSTITUTION:禁止 MySQL 在无法使用指定存储引擎时使用默认存储引擎。当这个参数设置为 ON 时,如果你在创建表时指定了不存在的存储引擎,MySQL 不会使用默认存储引擎,而是报错。
ONLY_FULL_GROUP_BY:强制 MySQL 对 GROUP BY 子句中的所有列进行分组。当这个参数设置为 ON 时,如果你在 SELECT 语句中使用了 GROUP BY 子句,但 SELECT 列中包含了未被 GROUP BY 的列,MySQL 会报错。
ANSI_QUOTES:启用 ANSI 标准中的双引号作为标识符引用符。当这个参数设置为 ON 时,你可以使用双引号来引用数据库对象名称,例如 "table_name"。
5、复制my-default.cnf 到 /etc/my.cnf (mysqld启动时自动读取)
cp my-default.cnf /etc/my.cnf
6、复制mysql.server到/etc/init.d/目录下,目的想实现开机自动启动
cp mysql.server /etc/init.d/mysql
7、修改 /etc/init.d/mysql参数
vi /etc/init.d/mysql
添加
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
8、创建一个操作数据库的专门用户
-
groupadd mysql
#建立一个mysql的组 -
useradd -r -g mysql mysql
#建立mysql用户,并且把用户放到mysql组 -
passwd mysql
#给mysql用户设置一个密码 -
chown -R mysql:mysql /usr/local/mysql/
#给目录/usr/local/mysql 更改拥有者
9、初始化 mysql 的数据库
-
cd /usr/local/mysql/bin/
首先去到mysql的bin目录 -
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
初始化 -
此时生成出一个data目录,表示数据库初始化成功,记录临时密码
Hkta?9tHjX%&
。 -
./mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
给数据库加密 -
./mysqld_safe --user=mysql &
启动mysql(加上&代表此进程在后台运行) -
另外打开一个窗口,检查
ps -ef | grep mysql
发现有以上进程便代表启动成功
-
登录数据库
./mysql -uroot -p
-
修改密码`set password=password('新密码');
`
exit
退出mysql
9. 设置开机自启动
`chkconfig --add mysql`添加服务mysql
`chkconfig mysql on`设置mysql服务为自动
`init 6`重启查看进程
==提示:输入init 6 后敲回车,系统开始重启,Xshell链接会中断,等两三分钟后再Xshell重新链接。==
`ps -ef | grep mysql`查看进程
![](https://img2023.cnblogs.com/blog/2938760/202305/2938760-20230508115447847-1054585649.png)
10. 配置环境变量
vi /etc/profile
为了方便操作,配置环境变量还是有必要的。
在文件末尾加上如下两行代码
PATH=$PATH:/usr/local/mysql/bin
export PATH
执行 命令source /etc/profile
使其修改生效,执行完可通过echo $PATH命令查看是否添加成功。
11. 配置远程连接
use mysql;
update user set Host='%' where User='root';
or
grant all privileges on *.* to 'root'@'%' identified by 'password';
然后刷新更改flush privileges;
解释:root 为用户名,“%”指的是所有ip地址,可替换为具体的ip,.代表数据库.表。