MySQL二进制安装


1.下载mysql

MySQL社区版下载

https://downloads.mysql.com/archives/community/

image20200223135527926.png

2.二进制安装

2.1指定安装

将mysql安装到/usr/local/mysql目录中:

# Centos7安装依赖
yum install -y libaio libaio-devel ncurses ncurses-devel openssl openssl-devel

# Ubuntu22.04 安装依赖
sudo apt update
sudo apt install -y libaio1 libaio-dev libtinfo5 libncurses-dev libncurses5 libncurses5-dev libncursesw5 libncursesw5-dev libssl-dev


# 下载MySQL二进制安装包
# 官网下载
# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

# 局域网内下载
wget http://192.168.3.200/Software/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

# 解压
tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz -C /usr/local/

# 改名
cd  /usr/local/
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql

# 创建mysql用户
useradd mysql -M -s /sbin/nologin

# 创建data文件夹
# data文件夹是用于存储数据库文件,他的位置是在mysql目录下
mkdir /usr/local/mysql/data

# 更改mysql目录权限
chown mysql:mysql -R /usr/local/mysql

image20200223012815486.png

2.2初始化数据库

# 修改MySQL配置文件
cat << EOF > /etc/my.cnf
[mysqld]
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
socket = /tmp/mysql.sock
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-storage-engine=InnoDB
default-authentication-plugin=mysql_native_password
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
EOF

# -----------------------------------------------
# sql_mode=NO_ENGINE_SUBSTITUTION:这个设置要求 MySQL 在遇到存储引擎不可用时,直接报错而不是替换成其他可用的存储引擎。
# STRICT_TRANS_TABLES:这个设置要求 MySQL 严格遵循事务安全的规则,对于事务中出现警告或错误的操作会导致整个事务回滚。
# 通过设置这些 SQL 模式,可以帮助确保数据库的数据完整性和一致性,提高数据库操作的准确性和安全性。

# 执行初始化
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# 执行完后查看初始密码:
cat /usr/local/mysql/data/error.log

image20200223013228179.png image20200223182708100.png

2.3启动mysql服务

/usr/local/mysql/support-files/mysql.server start
Starting MySQL... SUCCESS!
# 之后可以将启动脚本复制到/etc/init.d/目录,这是启动脚本的默认目录。

# 启动MySQl本质执行的是mysqld命令
ps -aux|grep mysqld

## 显示结果如下:

# /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/error.log --pid-file=/usr/local/mysql/data/mysql.pid --socket=/tmp/mysql.sock --port=3306
# 关闭mysql本质是kill mysqld的pid

# 修改系统环境变量
# 想要在任意目录执行mysql的命令需要修改/etc/profile

vim /etc/profile
# 在最后一行添加指定PATH关联MySQL的bin目录

export PATH=$PATH:/usr/local/mysql/bin

# 配置完成后让系统重新加载/etc/profie文件
source /etc/profile

2.4服务器操作

开机启动、启动、停止、重启、

# 1.方法使用默认启动脚本的路径支持 start 启动 |stop 停止 |restart 重启
/usr/local/mysql/support-files/mysql.server restart

# 2./etc/ini.d/mysqld
# 将启动脚本复制到/etc/init.d/目录,这是启动脚本的默认目录。
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

# -a 参数保留原有权限
# 测试重启
/etc/init.d/mysqld restart

# 3.service
# 配置好/etc/ini.d/mysqld后可以使用service命令管理服务
service mysqld restart

# 4.systemctl
# 配置mysqld开机启动后,可以使用systemctl管理mysqld
systemctl enable  mysqld
systemctl restart mysqld
systemctl status  mysqld

2.5修改root密码

2.5.1.使用mysqladmin命令修改密码

Mysql安装成功后,默认的密码为随机密码,你可以使用以下命令来创建新的root用户的密码:

mysqladmin -u root -p  password "root123"
Enter password:初始密码
现在你可以通过以下命令来连接到Mysql服务器:

mysql -u root -p
Enter password:*******
注意:在输入密码时,密码是不会显示了,你正确输入即可。

2.5.2.使用随机密码登录到MySQL中修改

mysql -uroot -p
Enter password:初始密码

image20200223014851493.png

mysql> alter user 'root'@'localhost' identified by 'root123';
Query OK, 0 rows affected (0.05 sec)

2.5.3.MySQL重新初始化

安装时初始化失败或初始密码遗失时可以重新初始化

# 删除 /usr/local/mysql/data目录中数据
rm -rf /usr/local/mysql/data/
mkdir /usr/local/mysql/data
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cd /usr/local/mysql
cat data/error.log

# 方法一:
mysqladmin -uroot -p password "root123"
初始密码

# 方法二:
mysql -uroot -p
初始密码
mysql> alter user 'root'@'localhost' identified by 'root123';
Query OK, 0 rows affected (0.05 sec)

2.5.4.跳过MySQL的root密码直接登录

忘记root密码时,可以使用该方法

vim /etc/my.cnf

[mysqld]
# 配置的最后添加,跳过密码登录的功能
skip-grant-tables

# 重启服务
systemctl restart mysqld
mysql -uroot

mysql>flush privileges;
Query OK, 0 rows affected (0.05 sec)
mysql>alter user 'root'@'localhost' identified by 'root123';
Query OK, 0 rows affected (0.05 sec)
mysql>\q
# 密码修改成功后,必须在配置文件中删除或注释掉skip-grant-tables

# 然后重启服务
systemctl restart mysqld

2.6设置远程连接

生产环境不推荐开放root用户的远程登录权限;

# 登录MySQL
mysql -uroot -proot123

# 创建远程登录账号
mysql> create user 'root'@'%' identified with mysql_native_password by 'root123';
Query OK, 0 rows affected (0.01 sec)

# 设置开放权限
mysql> grant all on *.* to 'root'@'%';
Query OK, 0 rows affected (0.00 sec)

# 刷新使权限生效
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

遇到问题:

Can’t connect to MySQL server on ‘192.168.8.20’ (61)

解决方法:

# 关闭防火墙
systemctl stop firewalld.service
firewall-cmd --state

2.7mysql卸载步骤(了解)

# 停止mysql服务
/etc/init.d/mysqld stop
Shutting down MySQL.... SUCCESS!

# 或者使用systemctl停止
systemctl stop mysqld

# 查找所有mysql相关文件夹
find / -name mysql

image20200223024128126.png

# 删除所有查出来的文件夹
rm -rf /var/lib/selinux/targeted/active/modules/100/mysql
......

# 删除配置文件
# 配置文件一般有/etc/my.cnf 或/etc/init.d/mysql.server,

rm -f /etc/my.cnf
rm -rf /etc/init.d/mysqld

# 删除用户组

userdel mysql
id mysql

id: “mysql”:无此用户