Linux安装mysql
Posted cxscode
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux安装mysql相关的知识,希望对你有一定的参考价值。
第一步:下载mysql
cd /usr/local/src
下载包:
wget https://dev.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
(或直接从window上传)
解压:
tar zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
移动到/usr/local :
mv mysql-5.7.21-linux-glibc2.12-x86_64 /usr/local
进到/usr/local/目录下:
cd /usr/local
改名为mysql:
mv mysql-5.7.21-linux-glibc2.12-x86_64 mysql
然后去到mysql/support-files目录下:
cd mysql/support-files
第二步:修改参数
1、复制my.cnf 到 /etc/my.cnf (mysqld启动时自动读取)
cp my-default.cnf /etc/my.cnf
注意:如果你在安装时Linux虚拟机时同时安装了默认的mysql,此时操作以上步骤,终端将会提示你文件已存在是否覆盖,输入yes覆盖即可。
2、配置数据库编码
vi /etc/my.cnf
在这份文件中可以添加以下配置信息(如果有修改即可)
[mysql] default-character-set=utf8 [mysqld] default-storage-engine=INNODB character_set_server=utf8
3、复制mysql.server 到/etc/init.d/ 目录下【目的想实现开机自动执行效果】
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
(mysql是服务名)
4、修改 /etc/init.d/mysql 参数
vi /etc/init.d/mysql
给与2个目录位置
basedir=/usr/local/mysql datadir=/usr/local/mysql/data
第三步:创建 mysql 用户 (可跳过)
出于安全便利,创建一个操作数据库的专门用户
1)、建立一个mysql的组
groupadd mysql
2)、建立mysql用户,并且把用户放到mysql组
useradd -r -g mysql mysql
3)、给mysql用户设置一个密码
passwd mysql
4)、给目录/usr/local/mysql 更改拥有者
chown -R mysql:mysql /usr/local/mysql/
附:永久性删除用户账号
userdel peter groupdel peter usermod –G peter peter
(强制删除该用户的主目录和主目录下的所有文件和子目录)
第四步:初始化 mysql 的数据库
首先去到mysql的bin目录
cd /usr/local/mysql/bin
1.初始化
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
生成出一个data目录,代表数据库已经初始化成功
并且mysql的root用户生成一个临时密码:sBBe=g.a*3g+ (最好先记录这个临时密码)
2.给数据库加密
./mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
3.启动mysql(为了不让进程卡主,可在启动mysql的命令后加上&代表此进程在后台运行)
./mysqld_safe --user=mysql &
或者
/usr/local/mysql/support-files/mysql.server start
问题:
修复:
mkdir /var/run/mariadb/ chown -R mysql:mysql /var/run/mariadb/
有时建了文件夹和文件后,还是会报错,可以尝试删掉etc/my.cnf文件
4.检查
ps -ef|grep mysql
发现有以上进程便代表启动成功。
第五步:进入客户端
首先去到mysql的bin目录
cd /usr/local/mysql/bin
1.登录
./mysql -uroot -p
回车后输入之前的临时密码
错误1:ERROR 2002 (HY000): Can\'t connect to local MySQL server through socket \'/tmp/mysql.sock\' (2)
这个看应该是权限问题,增加权限配置,
mkdir /var/log/mariadb/; touch /var/log/mariadb/mariadb.log; chown -R mysql:mysql /var/log/mariadb/
错误2:mysqld_safe Directory \'/var/lib/mysql\' for UNIX socket file don\'t exists.
var/lib/mysql目录不存在,首要先创建,其次Mysql客户端和服务器端是通过初始化mysql.sock 文件来进行通信,所以服务器在启动时需要写入该文件,因此该文件所存放的目录必须双方都具有访问权限
mkdir /var/lib/mysql chown -R mysql:mysql /var/lib/mysql/ 或者 chmod 777 /var/lib/mysql
这个问题查了一堆资料没鬼用,最后用下面这句解决了,启动时指定user和地址,原文地址:https://www.cnblogs.com/xuey/p/10460495.html
在默认情况下,Mysql安装以后会在/tmp目录下生成一个mysql.sock文件,如该文件丢失则Mysql将不能够正常启动,解决方法:使用mysqld_safe 启动即可解决;
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
错误3:Can\'t create/write to file \'/var/run/mariadb/mariadb.pid\' (Errcode: 2 - No such file or directory)
分析/var/log/mariadb/mariadb.log日志, Can\'t create/write to file \'/var/run/mariadb/mariadb.pid\' (Errcode: 2 - No such file or directory),同样的处理方式
mkdir /var/run/mariadb/ chown -R mysql:mysql /var/run/mariadb/
2.修改密码
set password=password
或者
首先拿到操作系统的root权限,然后kill掉Mysql服务或者手动stop掉,这里我推荐使用手动stop;
1 service mysql stop
然后执行
1 mysqld_safe --skip-grant-tables &
&,表示在后台运行,不再后台运行的话,就再打开一个终端吧。
接着登陆MySQL修改密码
1 mysql 2 mysql> use mysql; 3 mysql> UPDATE user SET password=password("test123") WHERE user=\'root\'; 4 mysql> exit;
注意:如果Mysql的版本是5.7及以上的话update语句如下:
1 mysql> update user set authentication_string=passworD("test") where user=\'root\';
参考:https://www.cnblogs.com/chuckjam/archive/2018/08/10/9456255.html
第六步:设置远程访问
1,在远程访问之前需先配置防火墙 systemctl stop firewalld.service(不推荐,可配置开通3306端口)
2,授权
mysql>GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'%\' IDENTIFIED BY \'root的密码\' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES; mysql>select host,user from user; 【多出1条远程登录用户记录】 mysql>flush privileges;(刷新)
或者
mysql>use mysql; mysql>update user set host = \'%\' where user = \'root\'; mysql>select host, user from user; mysql>Flush Privileges;
错误:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
安装完mysql 之后,登陆以后,不管运行任何命令,总是提示这个
解决方式如下:
MySQL版本5.7.6版本以前用户可以使用如下命令:
mysql> SET PASSWORD = PASSWORD(\'Xiaoming250\');
MySQL版本5.7.6版本开始的用户可以使用如下命令:
mysql> ALTER USER USER() IDENTIFIED BY \'Xiaoming250\';
如果不清楚自己是什么版本,可以将两条都尝试一下。
参考:https://blog.csdn.net/muziljx/article/details/81541896
此时使用远程机器进行访问
解析:使用mysql -h主机ip -u用户名 -p密码即可进行远程访问
第七步:设置开机自启动
1、添加服务mysql
chkconfig --add mysql 或者【mysqld -install】
2、设置mysql服务为自动
chkconfig mysql on
3、重启查看进程
init 6 ps -ef|grep mysql
第八步:配置环境变量
为了方便操作,配置环境变量还是有必要的。
vi /etc/profile //export PATH=$JAVA_HOME/bin:/usr/local/mysql/bin:$PATH export PATH=$PATH:/bin:/usr/local/mysql/bin
小结:到这一步基本的配置基本就完成了。
安装包:mysql安装链接:http://pan.baidu.com/s/1pL7bFab 密码:5iz7
参考:http://www.cnblogs.com/1016882435AIDA/p/6265759.html
以上是关于Linux安装mysql的主要内容,如果未能解决你的问题,请参考以下文章