方式一
下载tar.gz包:https://www.mysql.com/downloads/
- 选择操作系统和版本
- 选择下载tar包
- 将tar包放入服务器,解压,并将解压后的包mv到/usr/local/并改名为mysql
tar zxvf mysql-5.7.27-el7-x86_64.tar.gz
mv mysql-5.7.27-el7-x86_64 /usr/local/mysql
- 将mysql文件夹权限改为mysql用户和mysql组(没有则新增),或者直接全改为root用户root组
sudo groupadd mysql
sudo useradd -r -g mysql mysql
cd /usr/local
sudo chown -R mysql:mysql mysql
- 进入mysql目录,创建data目录,准备安装(5.7版本的安装已经不建议使用mysql_install_db 来安装,而是使用mysqld)
cd /usr/locla/mysql
mkdir data
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
- 查看临时密码,初始密码在/var/log/mysqld.log这个文件里,输入命令:grep ‘temporary password’ /var/log/mysqld.log,可以直接获取密码。(注:密码为冒号后面的所有字符!)
- 执行以下命令创建RSA private key
sudo bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
- 配置my.cnf和开机启动
cd support-files
sudo cp my-default.cnf /etc/my.cnf (或者直接就在/etc/my.cnf)
sudo cp mysql.server /etc/init.d/mysql
sudo vim /etc/init.d/mysql ##修改basedir= 自己的路径 修改datadir= 自己的路径
- 如果没有/etc/my.cnf,可以参考此文件
[mysqld]
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
character-set-server=utf8
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/var/lib/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
- 启动mysql服务,用上面临时密码登录
## centos 6
service mysql start
## centos 7
systemctl start mysql
## 登录
mysql -u root -p
- 修改密码,开启权限
use mysql;
#5.7版本用这个命令
update user set password=password("123456") where user="root";
#5.7版本及以上修改密码报错,没有password这个字段,使用下面的命令
update mysql.user set authentication_string=password('123456') where user='root';
#开启远程登录
Grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
#刷新权限
FLUSH PRIVILEGES;
#退出,使用新密码登录
exit;
#命令行下需要创建用户:
create user '[用户名称]'@'%' identified by '[用户密码]';
# %:匹配所有主机,该地方还可以设置成‘localhost’,代表只能本地访问,例如root账户默认为‘localhost‘
# 示例:create user 'mysql'@'localhost' identified by '123456';
- 如果登录mysql时报下面的错-bash: mysql: 未找到命令:,这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/home/mysql/soft/mysql5.7/bin/mysql,我们则可以这样执行命令:
sudo ln -s /home/mysql/soft/mysql5.7/bin/mysql /usr/bin
- 如果登录mysql时报下面的错: Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2),这是由于权限问题,/tmp/mysql.sock是默认生成的,但是因为没有权限,所以该文件不存在,要不然就是直接copy一份,要不然就是做个软连接最简单了。
sudo ln -s /var/lib/mysql/mysql.sock /tmp
- 如果登录mysql后操作任何命令都报下面的错,则按下面方式处理
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> use test;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
...
解决:
alter user user() identified by "123456";
方式二
如果上述方式因为权限,pid频繁被删除等问题导致安装失败,则可以通过该方式。
在开始之前应该删除干净之前的安装如/usr/bin/mysql,/etc/my.cnf,/usr/share/mysql,
/var/log/mysql,/var/run/mysql等。
- 解压tar包,修改为指定用户,添加环境变量,在解压后的文件夹中创建data目录。
- 创建/etc/my.cnf文件,可以参考 叶老师的在线cnf 文件生产工具
- 初始化
mysqld --initialize --datadir=/services/mysql/data --user=hadoop --basedir=/services/mysql/
- 查看临时密码,如果是通过上面的叶老师连接生成的my.cnf,则在mysql/data/error.log
- 启动
mysqld --defaults-file=/etc/my.cnf &
- 通过
ps -ef | grep mysql
查看进程是否正常启动,如果未启动,则查看错误日志,如果是通过上面的叶老师连接生成的my.cnf,则在mysql/data/error.log,查看日志内容,如果报my.cnf配置错误,则对应修改即可。之后重新启动即可。 - 按照上面方式登录,修改密码权限即可。