Linux安装MySQL

2024-01-02 11:33:05

安装MySQL

什么是sql(以下语句都是在命令行输入)
四个部分

DDL 数据定义语言
	包含定义数据库及对象的语言
DML 数据操作语言
	包含允许更新的语言
DCL 数据控制语言
	允许授予用户权限访问数据库中特定数据的权限
DQL数据库查询语言

对应版本
MySQL:5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 8.0
mariadb:5.0 5.1 5.2 5.3 5.4 5.5 10.0 10.1 10.2 10.3 10.4 10.5(有限替代MySQL8) 10.6 10.10替代MySQL8
 每一行叫做记录 实体
 每一列叫做字段 属性
名词解释
数据库服务器运行着数据库应用的设备
数据库表的管理单元
字段、记录
记录字段的管理单元
字段字段名,字段类型、长度,字段约束组成
类型字符,数字,日期
约束NULL NOTNULL等x
关系型数据库和非关系型数据库

关系型数据库:MySQL Oracle ”SQL server“ mariadb db2

非关系型数据库:Redis MongDB Memcache

关系型数据库
优点:
1、易于维护:都是表结构,格式一致
2、使用方便:SQL语言通用,可用于复杂查询
3、复杂操作:支持sql,可用于一个以及多个表之间复杂的查询
4、学习成本低
缺点:
1、读写性能差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活性稍欠
3、高并发读写需求,
非关系型数据库
优点:
1、格式灵活
2、速度快
3、成本低
缺点:
1、不提供sql支持,学习和使用成本高
2、无事务处理

yum安装

清理环境
yum -y erase mariadb* mysql*	#卸载数据库
rm -rf /etc/my*		#配置文件
cd /var/lib/mysql	#数据文件
下载yum源包
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
开启MySQL57源,关闭MySQL80源三种方法
1、vim /etc/yum.repos.d/mysql-community.repo
	修改安装5.7的源打开, 关闭安装8.0的源
2、第二种修改的方法,方便我们使用脚本修改
yum repolist all |grep mysql
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
3、直接yum安装 临时关闭	#前两种永久关闭
yum install -y mysql-community-server --enablerepo mysql57-community --disablerepo mysql80-community
关闭防火墙selinux
sed -ri s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config && setenforce 0
systemctl stop firewalld && systemctl disable firewalld
安装必要的软件包
yum -y groupinstall "Development Tools"
yum -y install mysql-community-server
启动数据库
systemctl start mysqld
查找数据库密码
grep "password" /var/log/mysqld.log
登录数据库
mysqwl -uroot -p''
修改密码
#在MySQL里更改
alter user 'root'@'localhost' identified by "QianFeng@123";

#命令行修改
mysqladmin -uroot -p'' password ""
退出数据库
[ \q | exit | quit | ctrl d ]
关闭密码策略
# 关闭mysql密码强度策略,生产环境切勿尝试,首次启动不可关闭
vim /etc/my.cnf
validate-password=OFF
忘记密码
# 跳过密码进入数据库,用于忘记密码时使用
vim /etc/my.cnf
skip-grant-tables	#若关闭了密码策略需要将他先做注释

update mysql.user set authentication_string=password('Qianfeng@123') where User='root' and Host='localhost';

源码编译安装

所需要的依赖及安装mysql的包
yum -y groupinstall "Development Tools"
yum -y install ncurses ncurses-devel openssl-devel bison libgcrypt gcc gcc-c++ make cmake
#bison Linux下C/C++语法分析器
#ncurses:字符终端处理库
curl -o /usr/local https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.24.tar.gz
创建组、目录、修改权限
#在系统中添加运行mysqld进程的用户mysql
groupadd mysql
useradd -M -g mysql -s /sbin/nologin mysql
#在系统中添加自定义mysql数据库目录及其他必要目录
mkdir -p /usr/local/{data,mysql,log,tmp}
chown -R mysql:mysql /usr/local/{data,mysql,log,tmp}
cd /usr/local
tar xf mysql-boost-5.7.24.tar.gz
编译安装
cd mysql-5.7.24
cmake . \
-DWITH_BOOST=boost/boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/usr/local/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/usr/local/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1

#提示:boost也可以使用如下指令自动下载,如果不下载boost压缩包,把下面的这一条添加到配置中第二行
-DDOWNLOAD_BOOST=1/
#参数详解:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   安装目录
-DSYSCONFDIR=/etc \   配置文件存放 (默认可以不安装配置文件)
-DMYSQL_DATADIR=/usr/local/mysql/data \   数据目录   错误日志文件也会在这个目录
-DINSTALL_MANDIR=/usr/share/man \     帮助文档 
-DMYSQL_TCP_PORT=3306 \     默认端口
-DMYSQL_UNIX_ADDR=/usr/local/tmp/mysql.sock \  sock文件位置,用来做网络通信的,客户端连接服务器的时候用
-DDEFAULT_CHARSET=utf8 \    默认字符集。字符集的支持,可以调
-DEXTRA_CHARSETS=all \   扩展的字符集支持所有的
-DDEFAULT_COLLATION=utf8_general_ci \  支持的
-DWITH_READLINE=1 \    上下翻历史命令
-DWITH_SSL=system \    使用私钥和证书登陆(公钥)  可以加密。 适用与长连接。坏处:速度慢
-DWITH_EMBEDDED_SERVER=1 \   嵌入式数据库
-DENABLED_LOCAL_INFILE=1 \    从本地倒入数据,不是备份和恢复。
-DWITH_INNOBASE_STORAGE_ENGINE=1  默认的存储引擎,支持外键


make && make install

系统环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin'>>/etc/profile
source /etc/profile
配置文件
chown -R mysql.mysql /usr/local/mysql
cd /usr/local/mysql/mysql-test/include
cp /etc/{my.cnf,my.cnf.bak}
vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql                    #安装目录
datadir = /usr/local/data					 #数据存放目录
tmpdir = /usr/local/tmp						 #/tmp缓存目录
socket = /usr/local/tmp/mysql.sock			 #指定socket文件的位置
pid_file = /usr/local/tmp/mysqld.pid			 #指定pid文件的位置
log_error = /usr/local/log/mysql_error.log	 #错误日志的位置
slow_query_log_file = /usr/local/log/slow_warn.log  #慢日志查询

server_id = 1						#server-id=??
user = mysql						#指定用户
port = 3306							#指定端口
bind-address = 0.0.0.0				#监听地址(允许所以ip访问)
character-set-server = utf8			#字符集
default_storage_engine = InnoDB		#引擎
初始化数据库
mysqld --defaults-file=/etc/my.cnf --initialize --user='mysql'
启动mysqld服务
mysqld_safe --defaults-file=/etc/my.cnf &

#获取初始密码
[ grep "password" /usr/local/log/mysql_error.log | awk '/temporary password/{p=$NF}END{print p}' /usr/local/log/mysql_error.log ]
#数据库修改密码
mysql> alter user 'root'@'localhost' identified by "123";
#关闭MySQL
mysqladmin -p'123' shutdown

配置mysqld服务的管理工具(便于启动)
cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysqld
#
systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld
设置开机自启
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list

文章来源:https://blog.csdn.net/qq_57273662/article/details/135334286
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。