Loading

安装Mysql

参考:https://blog.csdn.net/QQB67G8COM/article/details/86377150

一、卸载旧版本的mysql

查看系统是否默认安装mysql,CentOS7下默认安装了mariadb,是mysql的一个分支,我们这里卸载掉

rpm -qa|grep mariadb        #查找系统是否存在Mariadb

rpm -e mariadb* --nodeps    #rpm -e 为卸载,--nodeps为强制卸载指令,
                            #如果一次性卸载不完就一个个卸载,rpm -e  [第一步查找出的文件名]  --nodeps
附:同样的方式可以卸载旧版本mysql

二、解压压缩包

最好解压到要安装的目录下,这里我建议安装在/usr/local/mysql目录下,即将安装包解压到/usr/local/mysql

tar -zxvf mysql-5.6.12-linux-x64.gz            #解压

mv mysql-5.6.12-linux-glibc2.5-x86_64 mysql    #更改文件夹名

三、添加新用户组以及新用户

groups mysql                #检查是否已经存在mysql这个用户组了

groupadd mysql                #添加新用户组mysql

useradd -r -g mysql mysql    #添加新用户并且分配到mysql用户组,"-r"为建立系统账号,"-g"指定用户所属的群组

四、安装mysql

cp ./support-files/my-default.cnf /etc/my.cnf        #安装配置文件

my.cnf(要记得在mysqld文件下配置my.cnf位置,不然my.cnf文件默认在basedir下生成,优先读取/my.cnf)

[mysql]
socket=/var/lib/mysql/mysql.sock
#设置mysql默认字符集
default-character-set=utf8 

[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
socket = /var/lib/mysql/mysql.sock

max_connections=200
character-set-server=utf8 
#设置创建表时默认使用的引擎
default-storage-engine=INNODB

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
mkdir ./data        #创建data文件夹

#安装数据库,注意,安装目录和解压目录要在同一个目录下,不然会报找不到my-default.cnf文件异常,
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

若初始化mysql数据库时出现下面错误,原因是缺少Data:dumper模块

解决方法 :安装autoconf库

yum -y install autoconf   //此包安装时会安装Data:Dumper模块

若出现lerror while loading shared libraries: libnuma.so.1:缺少 libnuma.so.1

解决方法:

yum install -y numactl

安装成功:

五、配置mysql

chmod 777 /etc/my.cnf                #解锁最大权限

#添加mysqld服务控制脚本的执行权限
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

#此前需要进mysql.server文件中进行配置basedir和datadir
nano ./support-files/mysql.server
#配置basedir和datadir
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
chkconfig --add mysqld #将mysqld服务添加到系统服务 
chkconfig --list mysqld #查看服务是否生效 
#输出结果类似:mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off 
systemctl list-dependencies mysqld #查看当前服务的其它依赖服务以及其它依赖对象 
systemctl list-unit-files #查看系统所有服务 
systemctl start mysqld #启动mysql 
systemctl stop mysqld #停止mysql 
systemctl restart mysqld #重启mysql 
systemctl status mysqld #查看mysql状态

六、配置MySql环境变量

# 进入全局变量配置文件
nano /etc/profile

# 添加
export MYSQL_HOME=/usr/local/mysql
PATH=${MYSQL_HOME}/bin:$PATH

# 立即生效
source /etc/profile

七、向防火墙添加开放端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

八、远程连接MYSQL SERVER

进入mysql:

# 初始没有设置密码,直接回车进入
mysql -u root -p

授权法,设置远程登录的密码:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你自己设置的密码' WITH GRANT OPTION;
flush privileges;

%代表全部ip,可以设定只允许被某ip进行访问,增加安全性

ps:如果需要外部远程连接需要在安全组开启相应的 mysql 运行端口(默认是3306)

九、设置登录密码

# 登录mysql
mysql -uroot -p
> use mysql;
 
(无password字段的版本,版本较新的mysql没有passowrd字段)
> update user set authentication_string=PASSWORD("密码") where user='root';
(有password字段的版本,mysql5.6版本使用下面这条命令设置密码)
> update user set password=password('密码') where user='root'; 
 
> update user set plugin="mysql_native_password";
 
> flush privileges;
 
> exit;

十、处理报错

1、可能出现权限不足报错,Starting MySQL... ERROR! The server quit without updating PID file (/usr/local/mysql/data/VM_0_5_centos.pid)

解决方法:chown -R mysql:mysql /var/lib/mysql/( /var/lib/mysql/ 为my.cnf中socket所在目录,为mysql用户赋予该目录的权限)

2、需要将/etc/my.cnf的权限修改为644,因为之前设置为777,需要降低权限:

chmod 644 /etc/my.cnf

修改文件权限后再登录可能出现:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

出现原因:不能通过mysql .sock连接MySQL问题

这个问题提示不能通过/var/lib/mysql/mysql.sock来连接到mysql

解决方法

mysql.sock 一般不是在 /tmp/mysql.sock 就是在 /var/lib/mysql/mysql.sock 这里,没有的话就用

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

或者是

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

3、还可能出现-bash: mysql: command not found

原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/usr/local/mysql/bin/mysql,我们则可以这样执行命令:

ln -s /usr/local/mysql/bin/mysql /usr/bin

linux下,在mysql正常运行的情况下,输入mysql提示:mysql command not found

遇上-bash: mysql: command not found的情况别着急,这个是因为/usr/local/bin目录下缺失mysql导致,只需要一下方法建立软链接,即可以解决:把mysql安装目录,比如MYSQLPATH/bin/mysql,映射到/usr/local/bin目录下: # cd /usr/local/bin# ln -fs /MYSQLPATH/bin/mysql mysql

还有其它常用命令mysqladmin、mysqldump等不可用时候都可按用此方法解决。注:其中MYSQLPATH是mysql的实际安装路径

4、MySQL启动失败,未生成pid文件的解决方法

在/usr/local/mysql/data 目录下查看err日志

出现报错:

2020-12-10 15:26:47 4571 [ERROR] Can't start server : Bind on unix socket: Address already in use
2020-12-10 15:26:47 4571 [ERROR] Do you already have another mysqld server running on socket: /tmp/mysql.sock ?
2020-12-10 15:26:47 4571 [ERROR] Aborting

报错原因:

生成pid文件的目录mysql的权限不足

> 解决方法:找到指定的mysql的数据存放目录并授权

chown -R mysql:mysql /usr/local/mysql/

chown -R mysql:mysql /var/lib/mysql/

重启mysql即可

posted @ 2019-10-18 19:11  小飞猪咯咯  阅读(169)  评论(0编辑  收藏  举报