、安装MYSQL之前需要安装JDK( https://www.cnblogs.com/yuezc/p/12102638.html)。
1.卸载系统自带的Mariadb
打开Terminal/shell终端:
[root@localhost ~]# rpm -qa|grep mariadb // 查询出来已安装的mariadb
[root@localhost ~]# rpm -e --nodeps 文件名 // 卸载mariadb,文件名为上述命令查询出来的文件
2. 在etc目录下的my.cnf文件
[root@localhost ~]# touch /etc/my.cnf(在5.7的版本中不存在此文件,需要创建它,因为这是mysql的配置文件)
3. 执行以下命令来创建mysql用户组
[root@localhost ~]# groupadd mysql
4. 执行以下命令来创建一个用户名为mysql的用户并加入mysql用户组
[root@localhost ~]# useradd -g mysql mysql
一、安装mysql。
1、准备好安装的mysql,我所使用的的是 mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz 版本。
下载地址:https://dev.mysql.com/downloads/mysql/
2、在本地(windows)上传,使用FTP工具。记得上传至root用户下,如果再普通用户下,请注意权限配置,可能会有无权限移动、复制以及解压缩等。
3、在将压缩包移动至想要安装的位置,例如在/usr/local/mysql目录下。
[root@localhost ~]# ls anaconda-ks.cfg Desktop Downloads jdk-7u80-linux-x64.tar.gz mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz Public Videos apache-tomcat-7.0.96.tar.gz Documents initial-setup-ks.cfg Music Pictures Templates [root@localhost ~]# mv mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz /usr/local/mysql
(mysql目录并不存在,需要手动创建:mkdir mysql 如下操作)
[root@localhost ~]# cd /usr/local/ [root@localhost local]# mkdir mysql
创建完成并完成移动后,再解压压缩包。如下“进入mysql目录,再解压GZ格式的文件”
[root@localhost local]# cd mysql [root@localhost mysql]# tar -zxvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
在查看,会有该目录
[root@localhost mysql]# ls
mysql-5.7.27-linux-glibc2.12-x86_64
4、配置my.cnf文件,
授予my.cnf最大权限
[root@localhost ~]# chmod 664 /etc/my.cnf
如下:这些是我个人的配置。用户是root,一般不推荐使用默认设置为mysql
[client] socket=/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/mysql.sock [mysqld] port=3306 user=root basedir=/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/ datadir=/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/data socket=/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/mysql.sock pid-file=/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/data/mysqld.pid log-error=/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/mysql.err sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
配置完成后。运行该命令:source /etc/my.cnf 确保生效。
上述配置文件,里面的基本都是安装的文件的物理路径。注意:datadir=/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/data 这个里面的data是不存在的,需要在这个的目录下自己创建。
5、给mysql文件给予去权限:
[root@localhost local]# ls bin etc games include jdk kettle lib lib64 libexec mysql sbin share src tomcat [root@localhost local]# chmod 765 mysql
6、然后进入到 :/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/ 目录,更改mysql目录下所有的目录及文件夹所属的用户组和用户:
[root@localhost /]# chown -R root:root /usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64 (因为我在配置文件中,设置的user=root)
7、编译安装并初始化mysql,务必记住初始化输出日志末尾的密码
如果不进行此步骤,会在启动时报错:
2020-08-05T07:26:53.324788Z 0 [Note] Plugin 'FEDERATED' is disabled. mysqld: Table 'mysql.plugin' doesn't exist
一般找错误需要到错误日志中查看,而如何让错误出现在指定的日志文件,需要在my.cnf中配置,且在安装目录下创建此文件mysql.err
[root@localhost mysql5727]# cat /etc/my.cnf [client] socket=/usr/local/mysql5727/mysql.sock [mysqld] port=3306 user=root basedir=/usr/local/mysql5727 datadir=/usr/local/mysql5727/data socket=/usr/local/mysql5727/mysql.sock pid-file=/usr/local/mysql5727/data/mysqld.pid log-error=/usr/local/mysql5727/mysql.err sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION default_password_lifetime=0
编译安装并初始化mysql的命令:
[root@localhost mysql-5.7.27-linux-glibc2.12-x86_64]# cd bin [root@localhost bin]# ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/ --datadir=/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/data --user=root --initialize
如果未出现初始密码,但后续可以正常启动mysql,在这一步无需担心。
二、设置开机自启动服务控制脚本:
1、复制启动脚本到资源目录
[root@localhost mysql-5.7.27-linux-glibc2.12-x86_64]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
2、增加mysqld服务控制脚本执行权限
[root@localhost mysql-5.7.27-linux-glibc2.12-x86_64]# chmod +x /etc/rc.d/init.d/mysqld
3、将mysqld服务加入到系统服务
[root@localhost mysql-5.7.27-linux-glibc2.12-x86_64]# chkconfig --add mysqld
4、检查mysqld服务是否已经生效
[root@localhost mysql-5.7.27-linux-glibc2.12-x86_64]# chkconfig --list mysqld
命令输出类似下面的结果:
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
表明mysqld服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用service命令控制mysql的启动和停止
命令为:service mysqld start和service mysqld stop
5、启动mysqld
[root@localhost mysql-5.7.27-linux-glibc2.12-x86_64]# service mysqld start
启动可能很会报错。请注意。
6、将mysql的bin目录加入PATH环境变量,编辑 ~/.bash_profile文件
[root@localhost mysql]# vim ~/.bash_profile
在文件最后添加如下信息:
export PATH=$PATH:/usr/local/mysql/bin
然后按ESC键
继续 shift键加冒号打出来=> :
接下来输入wq回车即可
执行下面的命令是修改的内容立即生效:
[root@localhost mysql]# source ~/.bash_profile
7、以root账户登录mysql,默认是没有密码的
[root@localhost mysql]# mysql -uroot -p
要输入密码的时候直接回车即可。
如果不成功或之前没出现密码,则需要单独设置操作一下:
1、初始密码在/var/log/mysqld.log这个文件里 2、输入命令:grep 'temporary password' /var/log/mysqld.log,可以直接获取密码。 (注:密码为冒号后面的所有字符!) 如果想要更换初始密码,可以按照下面的操作。 在/etc/my.cnf中加入如下内容: 在[mysqld]下添加skip-grant-tables,然后保存并退出。这句意思其实是,无密码登录。 然后重启mysql服务 systemctl restart mysqld a、重启以后,执行mysql命令进入mysql命令行 b、修改root用户密码 MySQL> update mysql.user set authentication_string=password('123456') where user='root'; MySQL> flush privileges; MySQL> exit; c、最后把/etc/my.cnf中的skip-grant-tables注释掉,然后重启mysql,即:service mysqld restart
8、设置root账户密码为root(也可以修改成你要的密码)
mysql>use mysql;
mysql> update mysql.user set authentication_string=password('sdrs3721') where user='root';
mysql>flush privileges;
这个成功之后,基本就完成了mysql的安装。但还有其他的需要设置
9、开启远程连接:
mysql>use mysql; msyql>update user set user.Host='%' where user.User='root'; mysql>flush privileges;
10、如果再远程连接数据库是报10038的错误,则需要将数据库的端口配置在防火墙中:https://www.cnblogs.com/yuezc/p/12518943.html
11、如果在登录成功后,报如下错误:
mysql> use mysql; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
需要修改密码,方式如下:
mysql> SET PASSWORD = PASSWORD('123456'); Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A