- A+
所属分类:MySQL
MySQL是一个开源、高性能的关系型数据库管理系统,使用SQL语言,支持多线程和跨平台操作,广泛应用于各类网站和应用程序,提供多种存储引擎和数据安全保障。
主要特点
开源与免费:可在GPL许可下自由使用、修改和分发;
高性能:优化SQL算法,提高查询速度;
多线程:支持多线程,充分利用CPU资源;
跨平台:可在多种操作系统上运行;
多语言支持:为C、Java、PHP、Python等提供API;
可扩展性:支持多种存储引擎;
数据安全性:提供用户权限管理、数据备份和恢复、数据加密等。结构组成
数据库:存储数据的集合,包括表、视图、索引等;
数据表:数据库中最基本的元素,用于存储数据记录;
数据记录:表中的每一行,代表一条数据。SQL语言
SQL(Structured Query Language)是用于处理关系型数据库的标准编程语言;
支持数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)。
安装MySQL
安装MySQL依赖
yum -y install libaio
下载MySQL包
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.32-el7-x86_64.tar.gz
解压安装MySQL
tar xvf mysql-5.7.32-el7-x86_64.tar.gz
mv mysql-5.7.32-el7-x86_64 /usr/local/mysql-5.7.32
ln -s /usr/local/mysql-5.7.32/ /usr/local/mysql
vim /etc/my.cnf
[client]
socket = /usr/local/mysql/tmp/mysql.sock
port = 3306
default-character-set = utf8mb4
[mysqld]
user = mysql
pid-file = /usr/local/mysql/tmp/mysqld.pid
socket = /usr/local/mysql/tmp/mysql.sock
datadir = /data/mysql
log-error = /usr/local/mysql/logs/mysqld.log
bind-address = 0.0.0.0
port = 3306
log-bin = mysql-bin
server_id = 1
binlog_format = mixed
skip_symbolic_links = 1
max_connections = 500
connect_timeout = 10
wait_timeout = 600
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
explicit_defaults_for_timestamp = 1 # As the parameter is deprecated, set it to 1 to avoid warnings
sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE
[mysqldump]
quick
quote-names
max_allowed_packet = 64M
创建数据目录和日志文件,临时文件目录
mkdir -p /data/mysql
mkdir -p /usr/local/mysql/{logs,tmp}
创建用户并授权
useradd -s /sbin/nologin -M mysql
chown -R mysql:mysql /usr/local/mysql*
MySQL初始化
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize
设置开机自启
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld.service
配置MySQL环境变量
echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysqld.sh
source /etc/profile
登录MySQL并修改密码
grep 'temporary password' /usr/local/mysql/logs/mysqld.log
2025-03-31T09:19:02.250750Z 1 [Note] A temporary password is generated for root@localhost: pZr=BMaPz3*u //过滤出临时密码
mysql -uroot -p
Enter password:pZr=BMaPz3*u //复制过滤出的密码登录
mysql> ALTER USER root@localhost IDENTIFIED BY 'xxx.com';
查看数据库

MySQL常用命令
SHOW DATABASES; //查询数据库
SELECT User, Host FROM mysql.user; //查看所有用户
SHOW TABLES; //查询当前库下有哪些表
SELECT *FROM table_name; //查询表中数据
CREATE DATABASE database_name; //创建数据库
use database_name; //使用database_name库
CREATE TABLE table_name (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
position VARCHAR(50),
hire_date DATE
); //创建一个table_name的表
//id列是一个整数类型,自动递增,并且是主键
//name列是一个可变字符类型,最大长度为100,且不允许为NULL
//position列是一个可变字符类型,最大长度为50
//hire_date列是一个日期类型
INSERT INTO table_name (name, position, hire_date) VALUES
('xxx','admin','2025-03-31'),
('xxx1','staff','2025-03-31'); //向表中插入多条数据
UPDATE employees
SET name = 'www', position = 'group leader', hire_date = '2025-4-1'
WHERE id = 2; //更新数据
//name = 'www': 将name列的值更新为'www'
//position = 'group leader': 将position列的值更新为'group leader'
//hire_date = '2025-4-1': 将hire_date列的值更新为'2025-4-1'
//WHERE id = 2: 指定哪些行应该被更,在这个例子中,只有id值为2的行会被更新
CREATE USER 'username'@'host' IDENTIFIED BY 'password'; //创建用户
GRANT ALL ON *.* TO 'username'@'host'; //授权
FLUSH PRIVILEGES; //刷新权限
DROP DATABASE database_name; //删除数据库
DROP TABLE table_name; //删除表
REVOKE ALL ON *.* FROM 'username'@'host'; //撤销授权
DROP USER 'username'@'host'; //删除用户