目 录CONTENT

文章目录

MySQL

解小风
2025-01-10 / 0 评论 / 1 点赞 / 19 阅读 / 14268 字

软件简介


安装部署

Docker 安装

# 环境需求
Docker
docker-image-mysql_v5.7.tar

# 导入镜像
sudo docker load --input docker-image-mysql_v5.7.tar
# 准备文件夹
mkdir -p /home/faramita/mysql/data
mkdir -p /home/faramita/mysql/conf
mkdir -p /home/faramita/mysql/log
sudo chmod 777 -R /home/faramita/mysql
# 准备配置文件 /home/faramita/mysql/conf/my.cnf
# my.cnf 文件内容如下
[client]
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
init_connect="SET collation_connection = utf8mb4_unicode_ci"
init_connect="SET NAMES utf8mb4"
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
# 创建并启动容器
docker run -p 3360:3306 \
--name mysql57 \
-v /home/faramita/mysql/log:/var/log/mysql \
-v /home/faramita/mysql/data:/var/lib/mysql \
-v /home/faramita/mysql/conf:/etc/mysql/conf.d \
--restart=always \
-e MYSQL_ROOT_PASSWORD=jusdot-xie-908 \
-d mysql:5.7

Ubuntu 安装

查询 MySQL
# 以 Ubuntu 22.04 系统为例

# 查看当前 MySQL 的状态
sudo service mysql status
# 检查所有已安装的MySQL软件包
dpkg --list | grep mysql

# 若无显示则代表未安装
# 若有显示,则代表曾安装过,需要先卸载,然后才能进行安装。如:
mysql-server
mysql-client
mysql-common
mysql-server-8.0
mysql-client-8.0
卸载 MySQL
# 首先停止 MySQL 服务
sudo service mysql stop

# 根据 【查询 MySQL】 的结果对 MySQL 相关软件包依次卸载
# 如对于 mysql-server mysql-client mysql-common,卸载命令为:
sudo apt-get remove --purge mysql-server mysql-client mysql-common
# 用上述命令依次卸载以下包:
mysql-server
mysql-client
mysql-common
mysql-server-8.0
mysql-client-8.0

# 删除 MySQL 相关的配置文件
sudo apt-get autoremove
安装 MySQL
# 安装服务器端
sudo aptitude install mysql-server
# 安装客户端
sudo aptitude install mysql-client
# 安装 MySQL 相关库
sudo aptitude install libmysqlclient-dev
# 查看版本(正常显示版本则说明安装成功)
mysql -V
# 查看当前 MySQL 的状态(如果无显示则证明未安装成功)
service mysql status
登录 MySQL
# 重启 MySQL 服务
service mysql restart

# 登录 MySQL
# 	-u 表示选择用户名
# 	-p 表示即将输入用户密码
# 执行后会提示输入密码(默认密码即为 ubuntu 系统密码)
mysql -u root -p

# 若出现 Access denied for user root@localhost 权限错误,则需要更改用户名和密码
# 若无错误,则跳过 更改用户名和密码 步骤
更改用户名和密码
# 更改用户名和密码(否则会出现 Access denied for user root@localhost 权限错误)

# 查看默认安装的 MySQL 的用户名和密码
sudo cat /etc/mysql/debian.cnf
# 可能显示如下
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = aKZ7wMW0xv7ncmgn
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = aKZ7wMW0xv7ncmgn
socket   = /var/run/mysqld/mysqld.sock
# 其中 用户 和 密码 分别如下
# user     = debian-sys-maint
# password = aKZ7wMW0xv7ncmgn
# 使用上述 用户 和 密码 重新登录 MySQL
mysql -u debian-sys-maint -p

# 此时应该成功登录
# 在 MySQL 内
mysql> use mysql;
# 刷新权限
mysql> FLUSH PRIVILEGES;
# 更改 用户名(root) 及 密码(123456)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '123456';
# 刷新权限
mysql> FLUSH PRIVILEGES;
# 退出 MySQL
mysql> quit;
# 重启 MySQL 服务
service mysql restart
# 使用修改后的 用户名(root) 及 密码(123456) 登录 MySQL 验证,未报错则说明修改成功
mysql -u root -p
# 退出 MySQL
mysql> quit;
常用服务操作
# 查看当前 MySQL 的状态
service mysql status

# 启动 MySQL 服务
service mysql start

# 重启 MySQL 服务
service mysql restart

# 登录 MySQL
mysql -u root -p

# 停止服务
service mysql stop

CentOS 安装

查询 MySQL
# 以 Centos 7 系统为例

# 首先检查系统中是否安装了自带数据库 mariadb,是否自带了 MySQL 以及相关安装包
mysql -V
rpm -qa | grep mysql
rpm -qa | grep mariadb

# 若无显示则代表未安装
# 若有显示,则代表曾安装过,需要先卸载,然后才能进行安装。如:
mysql-community-client-plugins-8.0.27-1.el8.x86_64
mysql80-community-release-el8-2.noarch
mysql-community-client-8.0.27-1.el8.x86_64
mysql-community-common-8.0.27-1.el8.x86_64
mysql-community-server-8.0.27-1.el8.x86_64
mysql-community-libs-8.0.27-1.el8.x86_64
卸载 MySQL
# 首先停止 MySQL 服务
systemctl stop mysqld.service

# 根据 【查询 MySQL】 的结果对 MySQL 相关软件包依次卸载
sudo rpm -e --nodeps [mariadb or mysql name]

# 如对于 mysql-community-client-plugins-8.0.27-1.el8.x86_64,卸载命令为:
sudo rpm -e --nodeps mysql-community-client-plugins-8.0.27-1.el8.x86_64
# 说明:-e 参数表示删除,--nodeps 表示忽略组件的依赖关系,强制卸载

# 用上述命令依次卸载以下包:
mysql-community-client-plugins-8.0.27-1.el8.x86_64
mysql80-community-release-el8-2.noarch
mysql-community-client-8.0.27-1.el8.x86_64
mysql-community-common-8.0.27-1.el8.x86_64
mysql-community-server-8.0.27-1.el8.x86_64
mysql-community-libs-8.0.27-1.el8.x86_64
安装 MySQL
# 官网:https://dev.mysql.com/downloads/mysql/5.7.html 下载 MySQL_5.7 离线安装包
# 在 MySQL Community Server 5.7.39 下方的下拉框分别选择:
# Linux - Generic
# Linux - Generic(glibc 2.12)(x86, 64-bit)
# 然后选择:
Compressed TAR Archive	5.7.39	645.3M
(mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz)
# 点击 Download
# 将下载好的 mysql-5.7*.tar.gz 上传至服务器,即 centos系统 的 /usr/local/ 下
cd /usr/local/
ll
# 解压安装包,会生成文件夹 mysql-5.7*
sudo tar -zxvf mysql-5.7*.tar.gz
# 将文件夹 mysql-5.7* 改名为 mysql
sudo mv mysql-5.7* mysql
ll
创建用户和用户组
# 创建用户和用户组
# 为了方便数据库管理,通常会建立一个 mysql 用户和 mysql 用户组
# 先检查 mysql 用户和用户组有没有被使用(无搜索结果,则未被使用)
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
# 添加 mysql 用户组
sudo groupadd mysql
# 添加 mysql 用户并加入用户组
sudo useradd -g mysql mysql
# 修改 mysql 用户的登陆密码
passwd mysql
目录授权
# 目录授权
cd /usr/local/
sudo chown -R mysql mysql/
sudo chgrp -R mysql mysql/
cd mysql/
sudo mkdir data
sudo chown -R mysql:mysql data
配置文件
# 配置文件的创建和配置信息
# 默认这个配置文件不存在,需要创建,并且填入配置信息
cd /usr/local/mysql/
sudo touch my.cnf
vi my.cnf
# 复制配置信息
[mysql]
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8

[mysqld]
socket=/var/lib/mysql/mysql.sock
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
explicit_defaults_for_timestamp=true
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.server]
user=mysql
basedir=/usr/local/mysql
安装数据库
# 安装数据库
cd /usr/local/mysql/
sudo bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
# 安装成功输出的日志如下:
2022-08-01 18:35:08 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2022-08-01 18:35:11 [WARNING] The bootstrap log isn't empty:
2022-08-01 18:35:11 [WARNING] 2022-08-01T10:35:08.657293Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead
# 安装成功后设置文件及目录权限:
cd /usr/local/mysql/
sudo cp ./support-files/mysql.server /etc/init.d/mysqld
sudo chown 777 my.cnf
sudo chmod +x /etc/init.d/mysqld
启动 MySQL
# 启动 mysql 及可能存在问题和解决方案
sudo /etc/init.d/mysqld restart
# 可能存在问题1:
ERROR! MySQL server PID file could not be found!
Starting MySQL.Logging to '/usr/local/mysql/data/localhost.localdomain.err'.
ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).
# 解决方案:此时需要检查是否有进程占用
# 执行此命令后没有对应的占用应用,就无需操作,如果有就杀死
ps aux|grep mysql
# 如发现进程
nlp  11805  0.0  0.0 112708   976  grep --color=auto mysql
# 杀死进程
kill -9 11805
# 重新启动
sudo /etc/init.d/mysqld restart
# 可能存在问题2:如若问题1解决后依然不能启动,并出现下述报错
Starting MySQL.Logging to '/usr/mysql/mysql-5.7.35/data/localhost.localdomain.err'.
mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.
ERROR! The server quit without updating PID file (/usr/mysql/mysql-5.7.35/data/localhost.localdomain.pid).
# 解决方案:此时需要检查是否有进程占用
# 如果 /usr/mysql/*localhost.localdomain.err 文件存在,就打开看下具体原因
# 如果不存在就执行以下步骤
cd /var/lib/
sudo mkdir mysql
# 提供读写权限
sudo chmod 777 /var/lib/mysql
# 重新启动
sudo /etc/init.d/mysqld restart
配置环境变量
# 配置环境变量
# 修改配置文件/etc/profile
vim /etc/profile
# 在文件末尾新增一行
export PATH=$PATH:/usr/local/mysql/bin
# 立即生效
source /etc/profile
更改用户名和密码
# 获取 mysql 安装后的初始密码
sudo cat /root/.mysql_secret
# 输出的结果如下
# Password set for user 'root@localhost' at 2022-08-01 18:35:08
/deMng9pdyY;
# 即为随机生成的初始密码
# 修改密码和存在的问题解决方案
mysql -u root -p

# 此时输入初始密码后可能出现如下的问题:
Can't connect to local MySQL server through socket '/tmp/mysql.sock'

# 解决方案如下:
# 首先保证在 /usr/local/mysql/my.cnf 文件中 socket 的配置如下:
[mysqld]
socket = /var/lib/mysql/mysql.sock
# 然后对 /tmp/mysql.sock 和 /var/lib/mysql/mysql.sock 建立软连接
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
# 上述问题解决后重新输入 用户名 和 初始密码 即可进入 mysql
mysql -u root -p
# 自定义密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新权限
mysql> FLUSH PRIVILEGES;
# 退出 MySQL
mysql> quit;
# 使用修改后的 用户名(root) 及 密码(123456) 登录 MySQL 验证,未报错则说明修改成功
mysql -u root -p
# 退出 MySQL
mysql> quit;
添加远程访问权限
# 添加远程访问权限
# 登录数据库
mysql -u root -p
# 在 MySQL 内
mysql> use mysql;
# 更新权限
mysql> update user set host='%' where user = 'root';
# 查询是否修改成功
mysql> select host,user from user;
# 结果如下表示成功,root用户的host已经修改为'%'
--+-----------+---------------+
--| host      | user          |
--+-----------+---------------+
--| %         | root          |
--| localhost | mysql.session |
--| localhost | mysql.sys     |
--+-----------+---------------+
# 修改结束后,退出数据库
mysql> quit;
# 重启数据库服务生效
sudo /etc/init.d/mysqld restart
开机自启
# 设置开机自启动服务
# 将 mysqld 服务加入到系统服务
chkconfig --level 35 mysqld on
# 检查 mysqld 服务是否已经生效
chkconfig --list mysqld
# 增加 mysqld 服务控制脚本执行权限
chmod +x /etc/init.d/mysqld
开通/关闭防火墙
# 开通 / 关闭防火墙
# 方式一: 关闭防火墙(centos7 关闭防火墙的方式与 centos6 不同)
systemctl stop firewalld
# 方式二: 开通防火墙,放开对 3306 的拦截
firewalld-cmd --zone=public --add-port=3306/tcp --permanent
常用服务操作
# 查看当前 MySQL 的状态
service mysql status

# 启动 MySQL 服务
service mysql start

# 重启 MySQL 服务
service mysql restart

# 登录 MySQL
mysql -u root -p

# 停止服务
service mysql stop

简单使用

# 登录 MySQL
mysql -h 127.0.0.1 -P 3360 -u root -p

# 查看已有数据库
mysql> SHOW DATABASES;

# 新建数据库
mysql> CREATE DATABASE own_tts;

# 使用数据库
mysql> use own_tts;

# 查看该数据库的数据表
mysql> SHOW TABLES;

# 新建数据表
mysql> CREATE TABLE polyphone (
    id INT NOT NULL AUTO_INCREMENT,
    data TEXT NOT NULL,
    source VARCHAR(255) NOT NULL,
    PRIMARY KEY (id)
);

# 查看数据表结构
mysql> DESCRIBE polyphone;

# 查看前 5 条数据
mysql> SELECT * FROM polyphone LIMIT 5;

# 查看后 5 条数据(以 id 排序)
mysql> SELECT * FROM polyphone ORDER BY id DESC LIMIT 5;

# 查看 id = 36 的数据
mysql> SELECT * FROM polyphone WHERE id = 36;

# 复制 polyphone 表为 polyphone_bak
mysql> CREATE TABLE polyphone_bak AS SELECT * FROM polyphone;

# 删除数据表
mysql> DROP TABLE IF EXISTS polyphone;

# 删除数据库
mysql> DROP DATABASE IF EXISTS own_tts;

# 退出 MySQL
mysql> quit;

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区