1. 下载mysql安装包
1.1 本地下载上传至服务器
下载网址:MySQL :: Download MySQL Community Server
下载下图所示版本:mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
下载完成之后上传至服务器(演示上传地址为~/),解压至/usr/local,并改名为mysql
// 解压
tar -Jxf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
// 移动
mv ~/mysql-8.0.31-linux-glibc2.12-x86_64 /usr/local
// 重命名为mysql
cd /usr/local
mv mysql-8.0.31-linux-glibc2.12-x86_64 mysql
1.2 直接在服务器下载(前提是服务器可以连接外网)
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
下载完成之后和本地上传的操作一样
2. 检查是否已经安装MySql
输入命令rpm -qa | grep mysql,如果什么都没有输出,则表示没有安装,则直接进入下一步。
如果有输出,则需要使用rpm -e xxx命令删除(xxx为文件全名,注意删除顺序,可能文件之间会有依赖,导致删除失败)。
3. 检查mysql用户组和mysql用户
- 执行
groups mysql命令,如果输出:groups: 'mysql': no such user,则表示没有,执行下面的命令创建
groupadd mysql && useradd -r -g mysql mysql
创建完成再执行groups mysql,输出:mysql: mysql
- 执行
groups mysql命令,如果有输出,则直接进行下一步
4. 创建数据目录并赋予权限
mkdir -p /data/mysql # 创建目录
chown mysql:mysql -R /data/mysql # 赋予权限
5. 修改配置文件vim /etc/my.cnf(没有就新建)
最好复制下来,改改内容,确保路径不出错
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
# character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
保存并退出::wq
6. 初始化
cd /usr/local/mysql/bin # 进入目录
# 初始化
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
7. 查看初始密码
执行命令cat /data/mysql/mysql.err,输出mysql.err的内容。
在输出的内容中(一般在最后面),找到localhost:此处为密码。如下图红色框框。
8. 启动mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql # 复制文件
service mysql start # 启动mysql
9. 修改密码
开启免密登录,修改my.cnf文件,默认在/etc/my.cnf。
vim /etc/my.cnf
# 在【mysqld】模块下添加:skip-grant-tables
# 保存退出:wq
# 重启服务,使配置生效
service mysql restart
登录:执行命令/usr/local/mysql/bin/mysql -u root -p,不输入密码直接回车登录。
这一步登录的时候可能不成功,出现下面的错误,原因就是缺少libraries.so.5,解决办法见标题10
./mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
10. 缺少ibraries.so.5的解决办法
- 下载一个新的
ibraries.so.5,复制进去,并移动到/usr/lib64文件夹下; - 一般系统中有类似的文件,找一个复制进去
一般在 /usr/lib 或者 /usr/lib64 文件夹下
有的时候不是以libtinfo.**名字出现,而是叫 libncurses.xx.xx
案例是在 /usr/lib64 文件夹下找到了
[root@localhost lib64]# ls | grep libncurses.so
libncurses.so
libncurses.so.6
libncurses.so.6.3
libncursesw.so.6.3
# 然后在 lib64 目录运行下面命令
ln -s ./libncurses.so.6.3 ./libtinfo.so.5
再次登录mysql,成功!
11. 刷新规则允许外部访问
use mysql #选择访问mysql库
update user set host = '%' where user = 'root'; # 使root能再任何host访问
FLUSH PRIVILEGES; # 刷新
12. 修改密码
ALTER USER "root"@"%" IDENTIFIED BY "1234"; # 修改密码,1234为密码,可自定义
FLUSH PRIVILEGES; # 刷新
退出mysql登录:quit;
把/etc/my.cnf免密登录删掉,既删除/etc/my.cnf文件中添加的skip-grant-tables;
再次登录,即可使用个人设置的密码1234登录。
13. 创建新用户,并授权
- 创建
mysql新用户
CREATE USER 'test'@'%' IDENTIFIED BY '123';
备注:@ 后面的命令解释
'%' - 所有情况都能访问
'localhost' - 本机才能访问
'111.222.33.44' - 指定 ip 才能访问
- 给用户授予权限
grant all on 数据库名.数据库表 to 用户名@'%' identified by "密码";
备注:
all 可以替换为 select,delete,update,create,drop
数据库名 所有的 用*
数据库表 所有的 用*
14. 常用命令
- 执行
sql文件
source /opt/soft/zhenhe/hkdyfy/zh_hkdyfy.sql
- 显示数据库列表
show databases;
- 显示库中的数据表
use 库名; // 打开数据库
show tables;
- 显示数据表的结构
describe 表名;
- 建库
create database 库名;
- 建表
create table 表名 (设定字段);
- 删库
drop database 库名;
- 删表
drop table 表名;
- 将表中记录清空
delete from 表名;