一、演示环境
1.centOS7
2.mysql-8.0.30
二、安装MySQL
【1】下载
MySQL :: Download MySQL Community Server (Archived Versions)
【2】查看是否已经安装 Mysql
rpm -qa | grep msyql
如果查看出来有东西,可以使用下面命令将其删除(xxx 为文件全名)
rpm -e xxx
【3】上传解压缩并移动
1.解压
不同包解压方式
tar -zxvf mysql-8.0.30-linux-glibc2.12-x86_64.tar.gz
tar -xvf mysql-8.0.30-linux-glibc2.12-x86_64.tar
tar -xvJf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
2.解压缩完成后
3.复制到 /usr/local 目录下并重命名
复制并重命名到/usr/local下
[root@cskCentOS7 opt] cp -r mysql-8.0.30-linux-glibc2.12-x86_64 /usr/local/mysql
【4】先检查是否有mysql用户组和mysql用户,没有就添加有就忽略:
[root@cskCentOS7 opt] groups mysql
添加用户组和用户
[root@cskCentOS7 opt] groupadd mysql && useradd -r -g mysql mysql
【5】添加数据库存储文件夹并设置权限
文件夹就放在这里就好了
[root@cskCentOS7 opt] mkdir -p /data/mysql //创建文件夹
[root@cskCentOS7 opt] chown mysql:mysql -R /data/mysql //给文件夹赋权
【6】配置文件 vim /etc/my.cnf(没有就新建)
[mysqld]
#如果想要远程连接数据库,则注释bind-address
#bind-address=127.0.0.1
port=3306
user=mysql
#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
【7】初始化
[root@cskCentOS7 opt] cd /usr/local/mysql/bin/
[root@cskCentOS7 opt] ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
查看日志并记录下临时密码(没有error的话就是初始化成功)
[root@cskCentOS7 opt] cat /data/mysql/mysql.err
【8】启动mysql
#将msyql复制到service中,使用service启动
[root@cskCentOS7 bin] cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
[root@cskCentOS7 bin] service mysql start
启动成功,到这就安装成功了
三、修改密码
1. 开启免密码登陆
修改my.cnf文件 默认在/etc/my.cnf。在[mysqld]模块下面添加:skip-grant-tables 保存退出。
[root@cskCentOS7 bin] vim /etc/my.cnf
2. 重启服务,使配置生效 。
[root@cskCentOS7 bin] service mysql restart
3. 登陆 /usr/local/mysql/bin/mysql -u root -p 不用输入密码直接敲回车键(或者输入临时密码)
4. 刷新规则允许外部访问
mysql> use mysql; #进入mysql数据库
mysql> select user,host from user; #查询用户访问规则
mysql> update user set host = '%' where user = 'root'; #修改为任意ip可访问
mysql> FLUSH PRIVILEGES; #刷新
5.修改密码
mysql> ALTER USER "root"@"%" IDENTIFIED BY "123456"; #设置密码
mysql> FLUSH PRIVILEGES; #刷新
mysql> quit #退出
6.删除免密登录
1.删除/etc/my.cnf 中的 skip-grant-tables 保存退出
2.重启服务 service mysql restart
7.使用新密码登陆
[root@cskCentOS7 bin] /usr/local/mysql/bin/mysql -u root -p
8.设置环境变量
修改文件 vim /etc/my.cnf 在文件最后加入
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
让文件生效
[root@cskCentOS7 mysql] source /etc/profile
四、创建新用户并给授权指定的数据库权限
1.创建mysql新用户
CREATE USER '用户名'@'访问级别' IDENTIFIED BY '密码';
访问级别:
'%' - 所有情况都能访问
'localhost' - 本机才能访问
'111.222.333.444' - 指定 ip 才能访问
2.给用户授权
mysql8以下版本
mysql> GRANT 权限类型 ON 数据库名.数据库表 TO 用户名@'访问级别' IDENTIFIED BY '密码' WITH GRANT OPTION;
mysql8版本必须分两步来实现用户权限【1、先创建用户;2、对该用户分配权限;3、最后,刷新权限】
mysql> CREATE USER '用户民'@'访问级别' IDENTIFIED BY '密码';
mysql> GRANT 权限类型 ON 数据库.数据表 TO '用户名'@'访问级别' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
权限类型
权限类型可以为 all,select,delete,update,create,drop
数据库名 所有的 用*
数据库表 所有的 用*
如果创建用户报这个错是因为已经存在该用户
mysql> CREATE USER 'test'@'%' IDENTIFIED BY '123456';
ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation
3.删除用户
mysql> drop user 'test'@'%'; #删除用户
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges; #刷新
Query OK, 0 rows affected (0.00 sec)