一、下载tar版本mysql
二、将tar包放入服务器,解压,并将解压后的包mv到/usr/local/package/mysql并改名为mysql-5.7
tar zxvf mysql-5.7.24-el7-x86_64.tar.gz
mv mysql-5.7.24-el7-x86_64 mysql-5.7
三、将mysql文件夹权限改为mysql用户和mysql组(没有则新增),或者直接全改为root用户root组
sudo groupadd mysql
sudo useradd -r -g mysql mysql
cd /usr/local/package/mysql
sudo chown -R mysql:mysql mysql
四、进入mysql目录,创建data目录,准备安装(5.7版本的安装已经不建议使用mysql_install_db 来安装,而是使用mysqld)
cd /usr/local/package/mysql/mysql-5.7
mkdir data
bin/mysqld --initialize --user=mysql --basedir=/usr/local/package/mysql/mysql-5.7 --datadir=/usr/local/package/mysql/mysql-5.7/data
五、查看临时密码,初始密码在/var/log/mysqld.log这个文件里,输入命令:grep ‘temporary password’ /var/log/mysqld.log,可以直接获取密码。(注:密码为冒号后面的所有字符!)
注:可能会获取不到临时密码,我的当时没有mysqld.log文件,但是在安装完成后在安装过程中可以看到初始密码
六、执行以下命令创建RSA private key
sudo bin/mysql_ssl_rsa_setup --datadir=/usr/local/package/mysql/mysql-5.7/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= 自己的路径
八、启动mysql服务,用上面临时密码登录
service mysql start
九、登录mysql
mysql -u root -p
十、修改密码,开启权限
#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';
#刷新权限
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后操作任何命令都报下面的错,则按下面方式处理
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";