最近学习在虚拟机上面搭建java环境,等到安装mysql时,出现很多问题,主要是在/usr/local/mysql-5.7.25-linux-glibc2.12-x86_64/support-files 下面没有mysqld_multi.cnf文件,并且/etc下面也没有my.cnf,看网上说,/etc下面没有话可以吧/support-files下面的mysqld_multi.cnf文件放过去,修改名称就好,但是实际问题是这两个目录下都没有对应的文件,这个问题网上说法不一,对于刚开始学习linux的我来说坑也比较多,好在问题最终解决了,参考:https://blog.youkuaiyun.com/whandgdh/article/details/83177693
一、下载mysql
1、进入官网
mysql 官网:https://www.mysql.com
oracle已经收购mysql,进入oracle 官网也可以找到mysql安装包下载:https://www.oracle.com/index.html
mysql 选择社区版 :mysql和大多数开源产品的路线一样,分为社区版和商业版。,社区版的开发及测试环境没有那么严格.遵守GPL协议(通用性公开许可证)。
2、版本选择
2.1.选择开源的社区版稳定版GA版本
2.2.可以选择5.1或5.5,互联网公司主流5.5,其次5.1或者5.6
2.3.选择mysql数据库GA版发布后6个月以上的GA版本
2.4.要选择前后几个月没有大的bug修复版本,而不是大量修复bug的集中版本
2.5.考虑开发人员开发程序使用的版本是否兼容你选的版本.作为内部开发测试数据库环境,跑大概3-6个月时间.
我这里选择了5.7
上图显示第一个是二进制源码包,第二个是二进制测试包,第三个是源码包。
二进制版本的mysql是已经编译好的,无需 configure ,make make install 等步骤,只需配置一下即可使用,卸载也方便,直接删除即可。可以自行调整编译参数,最大化地定制安装结果。
无需登陆,直接开始下载。
二、安装
1、上传安装文件
mysql 下载后,通过xshell文件上传到centos7虚拟机上
3、将安装包移动到user/localx 目录下
4、解压mysql安装包
tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
重命名文件
mv mysql-5.7.23-linux-glibc2.12-x86_64 mysql mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
5、建立软连接
建议一般不要修改默认文件名,通过软连接来完成
ln -s mysql-5.7.23-linux-glibc2.12-x86_64 mysql
6、创建mysql用户
useradd mysql
7、建立mysql数据目录,并赋予权限
7.1在根目录下
mkdir -p data
cd data
mkdir -p mysql
7.2授权
chown mysql:mysql -R /data/mysql
看到data 的用户变成了mysql
7.3 配置文件信息
把 /usr/local/mysql-5.7.25-linux-glibc2.12-x86_64/support-files 下面的mysql.service复制到/etc/init.d 下,取名为mysql,
切记要修改datadir=/data/mysql,如下图:
但是我的 /usr/local/mysql-5.7.25-linux-glibc2.12-x86_64/support-files 下面的mysql.service信息并没有修改,解压的时候生成的就是这样,自己没有修改过,如图:
在/etc目录下创建my.cnf文件,并进行配置
注意:log-error 一定要配置,因为如果mysql启动错误,可以从日志文件中找到错误原因。其次bind—address配置0.0.0.0是为了监听所有的连接。 编辑完后 按esc 后按住 shift+: 输入 wq表示保存并退出 。
在[mysqld]的段中加上一句:skip-grant-tables
这样就可以跳过验证进行登陆了,如下图是我自己新建my.cnf后写的内容。
9、mysql初始化
9.1注意这里需要进到刚刚解压mysql的bin目录下
cd usr/local/mysql/bin
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
补充:执行上面语句后,在这块会出错,centos安装mysql5.7.19报 error while loading shared libraries: libaio.so.1
参考:https://blog.youkuaiyun.com/m0_38113129/article/details/79056047 因为没有安装libaio;
查看错误日志文件是否有错
vim /data/mysql/mysql.err
可以看到日志有错误提示,提示与刚刚初始化命令中datadir相关
看到刚刚初始化命令中datadir前面少了–,所以大家安装的时候一定要细心。
9.2 重新初始化
注意重新初始化之前一定要把datadir目录下的文件清空,不然初始化还会报错进入到datadir目录 删除数据
cd /data/mysql/
rm -rf *
删除后,重新初始化
cd /usr/local/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
再次查看错误日志文件是否有错
vim /data/mysql/mysql.err
日志文件没有报错,而且有了临时密码,表示初始化成功
10.登陆mysql
10.1、初始化成功后,查看初始化密码
cat /data/mysql/mysql.err |grep password
并把密码复制下来
到这里的时候,发现这个xshell背景太丑,字体太小。设置了下xshell背景,效果下面可见。
10.2、登录mysql
./mysqladmin -u root -p password
并输入刚刚复制的密码,但是 却提示不能通过mysql.sock文件实现连接
三、安装相关问题
1、没有生成mysql.sock文件
查找mysql.sock 文件
find / -name mysql.sock
百度了下说连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。可以通过tcp/ip协议来连接。
即:
mysql -uroot -h 127.0.0.1 -p
但是 又又报错了
2 配置环境变量
表示不认识mysql命令,到目前位置还未配置环境变 即没有将mysql的bash加到path中。
编辑环境变量文件
vim /etc/profile
在后面添加系统bin路径以及mysql解压路径
配置好后再重启Xshell
然后再执行
mysql -uroot -h 127.0.0.1 -p
然后再输入刚刚临时文件的密码,但是 又又又报错了, 我内心快要崩溃了
到这里,又去问度娘,可能mysql服务没有启动,对啊,刚刚重启了虚拟机,并没有启动mysql服务。
3、启动mysql服务
mysql启动成功后,再通过tcp/ip连接,就在以为快要打工告成的时候,居然又报了同样的错
5、重新设置密码
这里需要先重新设置密码,设置成自己方便记忆的密码,进行数据库操作
set password for 'root'@'localhost'=password('MyNewPass4!');
flush privileges; 并刷新权限
然后数据库就可以使用了
然后 use mysql 可以进入到mysql这个数据库中,里面有user表啥的可以进行操作,,比如
以后再修改数据库密码时,参考:https://blog.youkuaiyun.com/qq_28938933/article/details/72872064 把user=root对应的HOST改成‘%’,在MySQL中’%’表示可以在任何主机上登录MySQL数据库, 这样本地就可以连接linux上创建的数据库了,语句为:
update user set HOST='%' where user='root'; 即就把localhost改成%。
到了这里就差不多了,下面我把我遇到的报错记录下:
1.env: /etc/init.d/mysqld: Permission denied-MySQL “env: /etc/init.d/mysql:权限不够” 的解决方法
参考下:http://www.dbmng.com/Article_2054.html
2.ERROR 1133 (42000): Can't find any matching row in the user table
参考:https://blog.youkuaiyun.com/github_38336924/article/details/82702017
https://blog.youkuaiyun.com/ljw_jiawei/article/details/90784350
3.开启、关闭、重启mysql服务的方法有三种,可以自行百度,我用的是
service mysql start
service mysql stop
service mysql restart,不能用service mysqld start...我想是因为我在上面/etc/init.d下取得名称是mysql,而不是mysqld
补充:2020/07/23
之前安装mysql太繁琐了,最近在安装的时候发现一篇博文,很简单,如下:参考:https://www.cnblogs.com/shuideqing/p/12038004.html
二、安装MySqlServer
1、下载 Mysql yum包
yum包文件在mysql官网里可以找到http://dev.mysql.com/downloads/repo/yum/
一般默认是显示最新版mysql的noarch.rpm文件
下载到本地再上传到服务器,或者使用wget 直接下载
这里我们下载个5.7版的文件
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
2、安转yum软件源
执行如下命令安装
rpm -Uvh mysql57-community-release-el7-10.noarch.rpm
安装yum软件源
3、安装mysql服务端
yum install -y mysql-community-server
安装mysql服务端,这一步比较漫长,和网速有关,我安装就比较快。
4、启动mysql
service mysqld start
5、检查mysql 的运行状态
service mysqld status
6、修改临时密码
Mysql5.7默认安装之后root是有密码的。
7 、获取MySQL的临时密码
为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,error log的位置,默认是 /var/log/mysqld.log。
只有启动过一次mysql才可以查看临时密码
grep 'temporary password' /var/log/mysqld.log
(如果之前安装过MySQL则这里可能会有多个密码,用最后一个,注意这个密码输入时是可以粘贴的) 查看临时
这里的密码是:v6BlUX=VgsfQ
8、 登陆并修改密码
使用默认的密码登陆
mysql -uroot -p(这是一个MySQL的以密码登录root用户的命令)
mysql -uroot -p v6BlUX=VgsfQ
在这块报错:ERROR 1049 (42000): Unknown database 'XXX',解决方法如下:
能够发现-p和密码是连在一起的,他们之间没有空格
然后就问题解决自然登录上去了!!!
后来我研究了一波,发现:
-u后面可以紧跟用户名,也可以加个空格,但密码后面一定不能加空格。
如果加了空格,mysql会认为后面那个是一个库名。
我们可以看看正确的语句:mysql -uroot -pv6BlUX=VgsfQ
用该密码登录到服务端后,必须马上修改密码再执行一些数据库操作,不然会报如下错误:
mysql> select @@log_error;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
修改密码
如何解决ERROR 1819 (HY000): Your password does not satisfy the current policy requirements呢? 按如下操作
必须修改两个全局参数:
首先,修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
再修改密码的长度
mysql> set global validate_password_length=1;
修改长度
再次执行修改密码就可以了
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
9、授权其他机器登陆,下面是两步:
mysql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;
这样本机电脑就可以连接远程服务器的mysql数据库了。
至此安装结束!
二、有关mysql数据库方面的操作
必须首先登录到mysql中,有关操作都是在mysql的提示符下进行,而且每个命令以分号结束
登录到mysql中:mysql -u root -p密码
1、显示数据库列表。
show databases;
2、显示库中的数据表:
use mysql; //打开库
show tables;
3、显示数据表的结构:
describe 表名;
4、建库:
create database 库名;
GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
UTF8: CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
5、建表:
use 库名;
create table 表名(字段设定列表);
6、删库和删表:
drop database 库名;
drop table 表名;
7、将表中记录清空:
delete from 表名;
truncate table 表名;
8、显示表中的记录:
select * from 表名;
9、编码的修改
如果要改变整个mysql的编码格式:
启动mysql的时候,mysqld_safe命令行加入
--default-character-set=gbk
1、查看mysql中所有的数据库:
show databases;
2、查看正在使用的是哪个数据库:
select database();
3、创建一个数据库:
create database 数据库名;
4、使用指定的编码创建数据库创建数据库:
create database test3 charset=gbk;
5、删除数据库语句:
drop database 数据库名;
如果要改变某个库的编码格式:在mysql提示符后输入命令
alter database db_name default character set gbk;
10.重命名表
alter table t1 rename t2;
11.查看sql语句的效率
explain < table_name >
例如:explain select * from t3 where id=3952602;
12.用文本方式将数据装入数据库表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;
总结:安装完成之后需要设置环境变量,在使用yum安装的时候的好处就是已经自动帮我们设置好环境变量了。👍
其实java环境也是这样,使用yum安装不需要在配置环境。