Linux下安装配置MySQL8服务器
在centos7中如果安装mysql的话,一般首先要卸载掉mariadb,删掉/ect/my.cnf等文件。
一、安装环境
OS:centos7.9
MySQL:mysql-8.0.40-linux-glibc2.28-x86_64.tar.xz
安装目录:/usr/local/mysql8
用root用户安装。
安装目录规划:
/usr/local/mysql8
|----mysql-8.0.40-linux-glibc2.28-x86_64
|----mysql ->mysql-8.0.40-linux-glibc2.28-x86_64
|----data
二、安装步骤
1、解压安装包
[root]#cd /usr/local
[root]#mv /path/to/mysql-8.0.40-linux-glibc2.28-x86_64.tar.xz .
[root]#tar -xJf mysql-8.0.40-linux-glibc2.28-x86_64.tar.xz
[root]#mkdir mysql8
[root]#mv mysql-8.0.40-linux-glibc2.28-x86_64 mysql8/
[root]#cd mysql8
[root]#ln -s mysql-8.0.40-linux-glibc2.28-x86_64 mysql
以上步骤之后,就将mysql安装到/usr/local/mysql8目录中了。
2、创建数据目录data和配置文件my.cnf
创建数据目录data
[root]#cd /usr/local/mysql8
[root]#mkdir data
创建配置文件my.cnf
[root]#cp /usr/local/mysql8/mysql/support-files/my-default.cnf /etc/my.cnf
[root]#vi /etc/my.cnf
在其中设置:
[mysqld]
basedir = /usr/local/mysql8/mysql
datadir = /usr/local/mysql8/data
port = 3306
3、添加bin到path环境变量
在/etc/profile中添加以下内容:
export PATH=/usr/local/mysql8/mysql/bin:$PATH
保存退出,之后source /etc/profile
4、创建mysql用户和mysql用户组
[root]#groupadd mysql
[root]#useradd -r -s /bin/false -g mysql mysql
这句话的意思是创建一个 -r 系统用户, -s值得它的shell,是不用登陆的shell。
5、初始化数据目录
这条命令的作用是初始化mysql中初试的数据库,比如mysql库,information_schema, performance_schema, sys等四个库。
[root]#bin/mysqld --user=mysql --basedir=/usr/local/mysql8/mysql --datadir=/usr/local/mysql8/data --initialize-insecure
在Ubuntu16.04上执行这条命令的时候,会提示系统没有libaio.so.1这个动态链接库,这时候需要apt-get install libaio-dev,安装完成后,就可以正常初始化数据目录了。
这条命令执行后会初始化数据目录 data,同时,由于指定了 --initialize-insecure选项,所以初始化后,不会对root用户设置随机的密码。
mysql一般初始化数据目录的时候,会给root设置一个随机密码,这样要记住第一登录以后,可以自己设置自己想设置的密码,这里为了方便就不让它自己生成随机密码了,一会儿第一次登录的时候,自己设置密码。
6、启动mysql数据库服务器
[root]#cd /usr/local/mysql8/mysql
[root]#bin/mysqld_safe --user=mysql &
7、登录mysql服务器并修改root用户密码
下面用mysql的命令来为root用户设置密码:
[root]#cd /usr/local/mysql8/mysql
[root]#mysql -uroot --skip-password
mysql>set password for 'root'@'localhost' = password(‘123456’); #设置root密码为123456
mysql>quit;
设置root密码还有很多其他的方法。
如下是另一种,这种方法是使用SQL语言中的update语句去更新系统数据库mysql中user表:
mysql>use mysql;
mysql>update user set password=password('123456') where user='root';
mysql> flush privileges;
flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。
这样mysql服务器就安装好了,可以登录mysql服务器,执行一些基本命令来验证服务器。
以下两步是做额外的设置。
8、添加root用户的远程访问权限
为什么要添加root用户的远程访问权限呢?因为默认情况下,mysql系统是不允许root用户从远程登录的,只允许root用户从本地登录,为了方便管理,这才要给加添root的远程权限。
[root]#mysql -uroot -p
mysql>grant all privileges on . to root@'%' identified by '123456'; #允许远程以root用户操作所有的数据库
mysql>flush privileges;
mysql>quit;
9、设置mysql服务器开机自启动
[root]#cp /usr/local/mysql8/mysql/support-files/mysql.server /etc/init.d/mysqld
[root]#vi /etc/init.d/mysqld
打开mysqld文件,往其中的basedir和datadir中输入正确的路径。
basedir=/usr/local/mysql8/mysql
datadir=/usr/local/mysql8/data
设置开机自启动
[root]#chkconfig --add mysqld
[root]#chkconfig --level 345 mysqld on
这样就配置好了mysql服务器。这样配置的服务器可以开机之后自己启动在后台运行,可以通过远程客户端使用root用户来管理。
三、连接MySQL服务器
TCP/IP方式(可以用于远程连接、也可以用于本地连接):
mysql -uroot -poldboy123 -h 10.0.0.51 -P3306
Socket方式(只能用于本地连接):
mysql -uroot -poldboy123 -S /tmp/mysql.sock
本地连接服务器,既可以用tcp/ip方式,也可以使用socket方式,而远程连接服务器,因为客户端是在远程,所以只能用tcp/ip的方式。
连接MySQL服务器有两种方法:本地连接和远程连接。
1、本地连接
本地连接,也叫SOCKET连接,指的是在MySQL服务器所在的机器上通过socket文件创建的连接。通常要检查MySQL服务器状态时,就可以登录到MySQL服务器所在的机器,通过本地连接的方式连接到MySQL服务器,去检查MySQL服务器的状态。或者在应用开发过程中,应用和MySQL部署在同一台机器上,这时候连接MySQL服务器就可以通过本地连接的方式进行。
$mysql -S/tmp/mysql.sock -uroot -p #mysql服务器启动后一般在/tmp目录下创建一个mysql.sock的socket文件,当然如果一般情况在本地的话,连接的时候可以省去-S。
2、远程连接
远程连接,也叫TCP/IP连接,指的是从MySQL服务器以外的服务器或客户端连接MySQL服务器的方式。远程连接和本地连接唯一的区别就是,远程连接需要指定MySQL服务器的IP地址和它监听的端口号。通过,当MySQL服务器和应用服务器部署在不同的服务器上的时候,就需要从应用服务器远程连接到MySQL服务器上去操作MySQL服务器。
$mysql -h127.0.0.1 -P3306 -uroot -p