Linux中mysql的安装

399 阅读4分钟

1. 下载mysql安装包

1.1 本地下载上传至服务器

下载网址:MySQL :: Download MySQL Community Server

下载下图所示版本:mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz

image-20230302111853643.png

下载完成之后上传至服务器(演示上传地址为~/),解压至/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:此处为密码。如下图红色框框。

image-20230302114636461.png

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的解决办法

  1. 下载一个新的ibraries.so.5,复制进去,并移动到/usr/lib64文件夹下;
  2. 一般系统中有类似的文件,找一个复制进去
一般在 /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. 常用命令

  1. 执行sql文件
source /opt/soft/zhenhe/hkdyfy/zh_hkdyfy.sql
  1. 显示数据库列表
show databases;
  1. 显示库中的数据表
use 库名; // 打开数据库
show tables;
  1. 显示数据表的结构
describe 表名;
  1. 建库
create database 库名;
  1. 建表
create table 表名 (设定字段);
  1. 删库
drop database 库名;
  1. 删表
drop table 表名;
  1. 将表中记录清空
delete from 表名;