Linux中安装MySQL数据库
下载mysql Linux版本数据库
通过TRC传到/usr/local中
安装MySQL
清除系统自带的mysql
rpm -qa | grep mariadb 列出所有被安装的rpm package
rpm -e --nodeps 被安装的文件名
再查看的时候可以看到已经卸载完成了,centos7不支持mysql,内部集成了mariadb,
而安装mysql的话会和mariadb文件冲突,所以需要先卸载mariadb,
以下为卸载mariadb,安装mysql的步骤
解压mysql安装包
tar -zxvf 压缩包名
解压后 更改文件名
mv mysql-5.6.42-linux-glibc2.12-x86 64 mysql
看下面更改成功
添加用户和用户组
添加用户组
- groupadd mysql
添加用户mysql 到用户组mysql
- useradd -g mysql mysql
打开mysql目录并在data下创建mysql目录
cd /usr/local/mysql/ 进到mysql目录
mkdir ./data/mysql 创建mysql目录
我们可以发现我们的用户组和用户都是root,把权限改为mysql用户和组
chown -R mysql:mysql ./
执行安装的脚本
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
出现如下异常
FATAL ERROR: please install the following Perl modules before executing /usr/bin/mysql_install_db:
Data::Dumper
解决方案没有那个脚本需要安装
使用如下命令
yum install -y perl-Module-Install.noarch
如果执行 yum命令时提示
解决方案
cd /etc/sysconfig/network-scripts
vi ifcfg-enp0s3
打开ifcfg-enp0s3文件,把其中的DNBOOT=no改为DNBOOT=yes
重启网络 service network restart
如果还不行,把虚拟机的网络模式由主机改为桥接模式。重启虚拟机在执行
yum install -y perl-Module-Install.noarch
在执行下面这条命令
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
就可以初始化mysql了。
配置mysql的一些文件
cp support-files/mysql.server /etc/init.d/mysqld
添加权限
chmod 755 /etc/init.d/mysqld
cp support-files/my-default.cnf /etc/my.cnf
修改启动脚本
vi /etc/init.d/mysqld
修改项:
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql
加入环境变量
编辑 /etc/profile,这样可以在任何地方用mysql命令了
vi /etc/profile
在文件中加入后,保存退出
export PATH=$PATH:/usr/local/mysql//bin
执行资源语句
source /etc/profile
启动服务
service mysqld start
关闭mysql service mysqld stop
查看运行状态 service mysqld status
测试连接
在mysql的bin目录下测试连接,第一次进入直接enter不用输入密码
./mysql -uroot
进入后修改密码
SET PASSWORD FOR ‘root’@‘localhost’ = PASSWORD(‘newpass’);
注意:把newpass改为123456或者其他的简单的
mysql数据库配置完成
使用物理机访问虚拟机的数据库
在window中建立新的sql连接,连接的时候
建立好后外面连接不上, 如果虚拟机内部可以访问数据库,从外部无法访问原因,端口被屏蔽了,或者root不支持远程连接
- 虚拟机防火墙开启,导致默认的3306端口被阻拦,无法访问。
firewall-cmd --zone=public --add-port=3306/tcp --permanent 备注:centos7适用
systemctl restart firewalld
- 当前用户没有远程访问权限
解决1:直接授权
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
flush privileges; 立即生效
上面语句中** 没显示出来
解决2:更改 ‘mysql’数据库‘user’表‘host’项,从‘localhost’改成‘%’。
use mysql;
select ‘host’ from user where user=‘root’;
update user set host = ‘%’ where user =‘root’;
flush privileges;