Linux解压Jar包离线安装Mysql5.7
发布时间
阅读量:
阅读量
卸载系统自带的Mariadb(首次安装)
//删除
rpm -e `rpm -qa|grep mariadb` --nodeps
//再次查询是否已删除
rpm -qa | grep mariadb
SELINUX(首次安装)
vi /etc/selinux/config
SELINUX=disabled
创建mysql用户和mysql用户组(首次安装)
/etc/group是用户组文件。数据表示为:组名:口令:组标识号:组内成员列表
/etc/passwd是用户文件。数据表示为:用户名:口令 :用户标识号:组标识号:注释性描述:主目录:登录shell
//检查mysql组和用户是否存在
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
//添加mysql用户组,将用户mysql加入到mysql组中
groupadd mysql
//添加mysql用户
useradd -g mysql mysql
//修改mysql用户的登陆密码
passwd mysql

备份(非首次安装)
//关闭mysql进程
service mysqld stop
//备份
mv /etc/my.cnf /etc/my.cnf_bak
find / -name mysql
//数据备份
mv /usr/local/mysql/data/ /usr/local/data_bak
mv /usr/local/mysql/ /usr/local/mysql_bak
//导出某个数据库的所有表结构和数据(此时不用加-d),由于数据量太大,此方法可能不适用
mysqldump -h 192.168.1.111 -u xyp9x -p device > 2.sql
//存储过程导出:
mysqldump -R -ndt -uxyp9x -p device > ai_iot_procedure20210826.sql
//查看下导出来的sql语句是否正确

解压(首次安装和非首次安装)
tar -zxf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
mv /usr/local/mysql-5.7.35-linux-glibc2.12-x86_64 /usr/local/mysql
//创建data目录,创建log目录
mkdir /usr/local/mysql/data /usr/local/mysql/log
touch /usr/local/mysql/log/log_error.log
chown -R mysql:mysql /usr/local/mysql
//初始化
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
配置文件my.cnf(首次安装)
touch /etc/my.cnf
vi /etc/my.cnf
[mysqld_safe]
#数据库错误日志文件
log-error=/usr/local/mysql/log/log_error.log
[mysqld]
skip-grant-tables
#Mysql服务的唯一编号,每个mysql服务Id需唯一
server-id=1
#MySQL安装根目录
basedir=/usr/local/mysql/
#MySQL数据文件所在位置
datadir=/usr/local/mysql/data
#用于本地连接的socket套接字,mysqld守护进程生成了这个文件
socket=/tmp/mysql.sock
#客户端设置,即客户端默认的连接参数
user=mysql
symbolic-links=0
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
#默认连接端口,默认是3306,可更改
port=3306
#拼接字符串长度
group_concat_max_len=102400
#本地安全路径,导入导出sql表数据
secure_file_priv=""
#关闭ONLY_FULL_GROUP_BY SQL模式,默认为启用
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#主从复制设置
#开启mysql binlog功能
log-bin=mysql-bin
#STATEMENT模式(SBR):每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)
#ROW模式(RBR):不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。
#MIXED模式(MBR):以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
binlog_format=MIXED
#超过15天的二进制日志会被自动删除
expire_logs_days=15
#允许最大连接数
max_connections=500
#数据库默认字符集
character-set-server=utf8
#默认存储引擎INNODB
default-storage-engine=INNODB
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=16M
[client]
port=3306

还原数据(非首次安装)
//还原配置文件
mv /etc/my.cnf_bak /etc/my.cnf
vi /etc/my.cnf,不注释skip-grant-tables
//如果升级mysql版本,判断新版本mysql的mysql库下和旧版本mysql的mysql库下的表个数是否一样
ls -l | grep "^-" | wc -l
//如果一样备份新库的mysql文件
mv /usr/local/mysql/data/mysql /usr/local/mysql-20211201
cp -r /usr/local/data_bak/mysql/ /usr/local/mysql/data/
if(没备份mysql库){
vi /etc/my.cnf,不注释skip-grant-tables
}
//将备份的数据文件中的数据库文件夹复制到data目录下
//数据库引擎使用innodb时,ibdata1文件保存了数据库元数据信息,里面保存了每个数据库里的每个表的ID
cp -r /usr/local/data_bak/ibdata1 /usr/local/data_bak/iot_device_information/ /usr/local/data_bak/metastore/ /usr/local/data_bak/xyp9x/ /usr/local/mysql/data/
//修改权限
chown -R mysql:mysql /usr/local/mysql

启动(首次安装和非首次安装)
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chmod 755 /etc/my.cnf
service mysqld start
chkconfig --add mysqld
if(备份了mysql库){
到此为止,进入mysql客户端验证数据库是否正常
}else{
继续下一步
}

添加环境变量(首次安装)
vi /etc/profile
# Mysql
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
source /etc/profile
修改密码(首次安装和非首次安装)
输入mysql
mysql> update mysql.user set authentication_string = password('root') where user='root';
mysql> flush privileges;
vi /etc/my.cnf,注释掉skip-grant-tables
service mysqld restart
mysql -uroot -proot
mysql> alter user user() identified by "root";
远程访问与权限(首次安装和非首次安装)
mysql> select host, user from mysql.user;
+-----------+---------------+
|host|user|
+-----------+---------------+
|localhost|mysql.session|
|---|---|
|localhost|root|
+-----------+---------------+
3 rows in set (0.00 sec)
//指定root用户能远程连接mysql
mysql> update mysql.user set host = '%' where user = 'root';
//创建普通用户和用户密码
mysql> create user 'xyp9x'@'%' identified by 'xyp9x';
//修改指定用户密码
mysql> update mysql.user set authentication_string = password('xyp9x') where user = 'xyp9x';
//删除账户及权限
mysql> drop user 'xyp9x'@'%';
mysql> flush privileges;
//普通用户导入数据权限
mysql> select super_priv from mysql.user where user = 'xyp9x';
mysql> update mysql.user set super_priv='Y' where user = 'xyp9x';
//查看普通用户权限(无任何权限)
mysql> show grants for xyp9x;
+-----------------------------------+
|Grants for xyp9x@%|
+-----------------------------------+
|GRANT USAGE ON *.* TO 'xyp9x'@'%'|
+-----------------------------------+
//权限赋给普通用户
mysql> grant all privileges on xyp9x.* to 'xyp9x'@'%';
mysql> grant select,insert,update,delete,create on xyp9x.* to 'xyp9x'@'%';
//查看普通用户权限
mysql> show grants for xyp9x;
+--------------------------------------------------+
|Grants for xyp9x@%|
+--------------------------------------------------+
|GRANT ALL PRIVILEGES ON *.* TO 'xyp9x'@'%'|
|---|
+--------------------------------------------------+
//撤销普通用户的权限
mysql> revoke all privileges on xyp9x.* from 'xyp9x'@'%';
mysql> flush privileges;
//创建数据库
mysql> create database xyp9x;
mysql> flush privileges;

全部评论 (0)
还没有任何评论哟~
