centos7下安装mysql5.7
1.官网找到 https://dev.mysql.com/downloads/repo/yum/
2.wget https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
若果报错误:warning: mysql80-community-release-el8-1.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
解决:rpm --import /etc/pki/rpm-gpg/RPM*
重新 rpm -ivh mysql80-community-release-el7-3.noarch.rpm
说明:虽然下载的源文件名字为mysql80-community-release-el7-3.noarch.rpm,不用担心,里边其实是包含了我们所要装的版本
yum repolist all | grep mysql
可以看到,默认的安装源为mysql80-community版本
配置默认源5.7
使用yum-config-manager --disable mysql80-community来取消mysql80-community的默认安装,然后
使用yum-config-manager --enable mysql57-community来使能mysql57-community成为yum默认安装版本。
安装
执行安装命令:
yum install mysql-community-server
使用yum安装mysql5.7过程中报错:All matches were filtered out by modular filtering for argument: mysql-community-server
先执行:yum module disable mysql
再执行:yum install mysql-community-server
b编辑文件
/etc/yum.repos.d/mysql-community.repo
修改gpgcheck=0即可
yum -y install mysql-devel
启动mysql服务
systemctl restart mysqld.service //重启mysql服务
systemctl status mysqld.service //查看mysql状态
systemctl stop mysqld.service //停止mysql服务
————————————————
获取临时密码
临时密码存在/var/log/mysqld.log中,使用如下命令查看:
grep "temporary password" /var/log/mysqld.log
登陆mysql
mysql -u root -p
Enter password:
必须先修改密码
alter user 'root'@'localhost' identified by 'xxxxx';
然后重启mysql
重新进入 创建新账号
use mysql
CREATE USER ‘db‘@‘%‘ IDENtIFIED BY ‘123456‘;
grant all privileges on *.* to 'db!!'@'%' identified by 'xxx' with grant option; 修改权限
// pig 是用户名,@后面的是指定ip(如果不限制只能在某个ip,@后面改为‘%’),by后面的是 密码
--进入mysql > update user set authentication_string = password('root') where user='root'; 后面跟分号 密码策略:大小写字母+数字+特殊符号
也可忽略验证:
vim /etc/my.cnf
增加
skip-grant-tables 忽略验证 保存,重新运行mysql mysql -u root -p 直接enter 进入不用输入密码
修改用户密码:
update user set authentication_string = password('root') where user='root';
root 登录后
一定要修改密码
alter user 'root'@'localhost' identified by 'test';
然后就可以了。
navicat 创建数据库的时候报错误:
CREATE DATABASE `douyin_livebroad` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'
> 1044 - Access denied for user 'zshd_db!!'@'%' to database 'douyin_livebroad'
远程连接造成的问题:
1、登录Linux中的MySQL:mysql -uroot -padmin。
2、对所要创建的数据库进行授权操作:grant all privileges on lc_db.* to 'root'@'%' identified by 'admin' with grant option;
lc_db:是你将要创建的数据库的名字;admin:是你Linux下MySQL的登录密码。
3、进行授权操作以后,就可以在工具中创建数据库和创建表等相关操作了。
更改数据库目录
操作步骤:
1.检查mysql数据库存放目录
mysql -u root -prootadmin
#进入数据库
show variables like '%dir%';
#查看sql存储路径
(查看datadir 那一行所指的路径)
quit;
2.停止mysql服务
service mysqld stop
3.创建新的数据库存放目录
mkdir /data/mysql
4.移动/复制之前存放数据库目录文件,到新的数据库存放目录位置
cp -R /usr/local/mysql/data/* /data/mysql/ #或mv /usr/local/mysql/data/* /data/mysql
5.修改mysql数据库目录权限以及配置文件
chown mysql:mysql -R /data/mysql/
vim /etc/my.cnf
datadir=/data/mysql (制定为新的数据存放目录)
vim /etc/init.d/mysqld
datadir=/data/mysql
6.启动数据库服务
service mysqld start
如果报错
env: /etc/init.d/mysqld: Permission denied
解决:
service mysqld start
遇到了这么一个问题:
env: /etc/init.d/mysqld: 权限不够
解决此问题的办法如下:
chmod a+wrx /etc/init.d/mysqld
然后再次执行:
service mysqld start
# For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html [mysqld] #skip-grant-tables # # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M datadir=/data/mysql #socket=/var/lib/mysql/mysql.sock socket=/data/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
更改用户权限增加用户
1.创建新用户的SQL语句:
CREATE USER ‘pig‘@‘192.168.1.101_‘ IDENtIFIED BY ‘123456‘;
// pig 是用户名,@后面的是指定ip(如果不限制只能在某个ip,@后面改为‘%’),by后面的是 密码
2.设置这个用户的权限,使用GRANT语句
(如限制某个用户只能查询,不能修改,或者限定只能查询特定的表)
语法:
mysql> grant 权限1,权限2,...权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令‘;
可选的权限列表:select, insert, update, delete, create, drop,
index, alter, grant, references, reload,
shutdown, process, file等14个权限
eg:
1. mysql> grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by ‘123‘;
给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表
进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。
2. mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123‘;
给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。
3. mysql>grant all privileges on *.* to joe@10.163.225.87 identified by ‘123‘;
给来自10.163.225.87的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
4. mysql>grant all privileges on *.* to joe@localhost identified by ‘123‘;
给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
5. mysql>flush privileges; //刷新系统权限表
use mysql
show databases;(显示db)
show tables;显示表
describe test; 或者show columns from test;显示表结构
drop table test;删除表
create table test( id int not null auto_increment primary key, title varchar(100) not null, name varchar(50) not null, age int not null, createtime datetime not null); 创建表
insert into test(title,name,age,createtime) values ('11','222',11,'2021-09-09'); 添加数据
update test set title='876868' where id =1; 修改数据
delete from test where id=1; 删除数据
select * from test order by id asc; 排序