我的安装包名为:mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
该安装包指定了glibc的版本,因此先查询下centos是否有该版本
## 补充:glibc是GNU发布的libc库,即c运行库。
## glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。
strings /lib64/libc.so.6 | grep GLIBC
## 列出所有被安装的名字包含mysql(grep -i:不区分大小)的rpm package
rpm -qa|grep -i mysql
## -e在系统中卸载软件
## -v详述安装过程
rpm –ev <包名>
## -name name: 文件名称符合 name 的文件。
## -iname name: -iname和-name相比会忽略大小写
## path填"/"表示从根目录开始查起(绝对路径一定是由根目录 / 开始写起)
find / -name mysql
## -r 将目录及以下之档案亦逐一删除。
## -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
rm –rf <目录名>
CentOS7默认会安装一个MySQL的分支产品mariadb,必须先卸载此分支产品。
rpm -qa | grep mariadb
## --nodeps不考虑依赖
rpm -e --nodeps
mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz安装包我放在了/opt目录下。
cd /opt
## -x 从备份文件中还原文件。
## -z 通过gzip指令处理备份文件。
## -v 显示指令执行过程。
## -f<备份文件> 指定备份文件。
tar -xzvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local
## 移动到需要的目录
cd /usr/local
## 重命名文件夹
mv mysql-5.7.31-linux-glibc2.12-x86_64 mysql
cd /usr/local/mysql
## 建立data子目录
mkdir data
## /ect/group 文件是用户组配置文件,即用户组的所有信息都存放在此文件中
## 组名:密码:GID:该用户组中的用户列表
cat /etc/group | grep mysql
## /etc/passwd 系统用户配置文件,存储了系统中所有用户的基本信息
## 注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序
cat /etc/passwd |grep mysql
## 删除对应的组和用户
## -r 删除用户登入目录以及目录中所有文件
userdel -r mysql
groupadd mysql
## useradd
## -r 建立系统帐号
## -g<群组> 指定用户所属的群组
useradd -r -g mysql mysql
## 将/usr/local/mysql的所有文件与子目录的拥有者设为mysql(:前面),群体的使用者mysql(:后面)
## -R : 处理指定目录以及其子目录下的所有文件
chown -R mysql:mysql /usr/local/mysql
vim /etc/my.cnf
内容:
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
socket=/tmp/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/tmp/mysqld/mysqld.pid
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
log-bin=mysql-bin
binlog-format=ROW
server_id=1
max_connections=1000
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
## wq 保存编辑退出
## wq!保存编辑强制退出
:wq!
cd /tmp
## touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件
touch mysql.sock
chown mysql:mysql mysql.sock
## 补充:
## chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限
## 第一个数字表示文件所有者的权限
## 第二个数字表示与文件所有者同属一个用户组的其他用户的权限
## 第三个数字表示其它用户组的权限
## 权限分为三种:读(r=4),写(w=2),执行(x=1)。
## 综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(rwx=7=4+2+1)
## ----------------------------------------------------------------------------
## chmod 755 设置用户的权限为:
## 1.文件所有者可读可写可执行
## 2.与文件所有者同属一个用户组的其他用户可读可执行
## 3.其它用户组可读可执行
chmod 755 mysql.sock
mysql.pid文件记录的是当前 mysqld 进程的 pid.
mkdir mysqld
cd /tmp/mysqld
touch mysqld.pid
cd ..
chown -R mysql:mysql mysqld
cd mysqld
chmod 755 mysqld.pid
cd /var/log
touch /var/log/mysqld.log
cd ..
chown -R mysql:mysql /var/log
cd log
chmod 755 mysqld.log
cd /usr/local/mysql/bin/
## 初始化数据库
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql--datadir=/usr/local/mysql/data
./mysqld_safe --user=mysql &
ps -ef | grep mysql
默认密码在mysqld.log日志里, 找到后保存到安全的地方
cat /var/log/mysqld.log
cd /usr/local/mysql/bin/
## 登录mysql
./mysql -u root -p
拷贝或者输入mysqld.log中获得的默认密码,即可进入mysql命令客户端:
执行show databases;
会报错:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> show databases;
mysql> set password=password("1234");
mysql>grant all privileges on *.* to 'root'@'%' identified by '1234';
立即生效:
mysql> flush privileges;
退出quit 或者 exit
mysql> quit;
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig --list mysql
chkconfig --add mysql
chkconfig --list mysql
service mysql start
service mysql stop
服务启动后,直接运行mysql -u root -p即可登录,不需要进入到对应的目录。
## 将mysql命令 注册快捷方式
ln -s /usr/local/mysql/bin/mysql /usr/bin
## 将mysqladmin命令 注册快捷方式
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin