阿里云centos环境之mysql安装<二>


文章目录

  • mysql配置
  • 前方
  • 验证mysql是否安装
  • 下载
  • 解压安装包并重命名为mysql
  • 添加用户组和用户
  • 安装
  • 修改/etc/my.cnf
  • 修改密码
  • 配置文件
  • 让外网可以访问
  • 删除无用用户
  • mysql忽略表名大小写敏感
  • mysql数据库安装的其它问题
  • 1.Data:Dumper
  • 2.mysql无法初始化
  • 3.启动MySql提示:The server quit without updating PID file(…)失败


mysql配置

前方

MySQL的安装主要有三种方式:二进制包安装(Using Generic Binaries)、RPM包安装、源码安装。这里使用二进制安装

验证mysql是否安装

执行

mysql -V

得到的结果如下:

Centos9下载阿里yum源_Centos9下载阿里yum源


说明并没有给我默认安装mysql数据库

下载

  1. mysql官网下载tag.gz格式的mysql文件,
  2. 执行
wget http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz

在线下载mysql。

解压安装包并重命名为mysql

解压

tar -zxvf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz

重命名解压后的文件为mysql

mv mysql-5.6.27-linux-glibc2.5-x86_64 mysql

添加用户组和用户

#添加用户组
groupadd mysql
#添加用户mysql 到用户组mysql
useradd -g mysql  -s /sbin/nologin mysql
#给mysql设置密码mysql
passwd mysql

安装

进入mysql目录

cd /usr/local/mysql/
#在data目录下创建目录'mysql'
mkdir mysql

#修改权限
chown -R mysql:mysql /usr/local/mysql

#初始化数据库
./scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/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
 
#启动服务
service mysqld start
 
#测试连接
mysql -uroot -p //新安装默认没有密码,输入后直接回车即可
 
#加入环境变量,编辑 /etc/profile,这样可以在任何地方用mysql命令了
export PATH=$PATH:/usr/local/mysql/bin

#使文件生效
source /etc/profile
 
# 启动mysql
service mysqld start

#关闭mysql
service mysqld stop

#查看运行状态
service mysqld status

# sql基本语句
SHOW DATABASES;  //查看当前所有数据库
CREATE DATABASE 数据库名;  //创建数据库
USE  数据库名; //选择数据库
SOURCE SQL文件路径; //导入数据
GRANT ALL PRIVILEGES ON 数据库名.* TO 用户名@"%" IDENTIFIED BY '密码' WITH GRANT OPTION; //创建一个远程用户使他有某个数据库的所有权限

出现"/var/lib/mysql/mysql.sock“不存在的解决方法
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

修改/etc/my.cnf

将如下内容替换my.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
character-set-server = utf8
#datadir=/usr/local/mysql
socket = /usr/local/mysql/mysql.sock

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
[client]
socket=/usr/local/mysql/mysql.sock
default-character-set=utf8
[mysql]
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock

修改密码

新安装默认没有密码,输入后直接回车即可,如果想重置密码可登陆然后再修改
先执行

mysql -uroot -p

当提示输入密码时回车。
登陆成功后,
老的执行方式是:

update mysql.user set password=PASSWORD('admin') where user='root';

修改密码,让修改生效

flush privileges;

但5.7版本的mysql里update mysql.user set password=password(‘root’) where user='root’时提示ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’,原来是mysql数据库下已经没有password这个字段了,password字段改成了authentication_string
所以新版本的执行命令是:

update mysql.user set authentication_string=password('admin') where user='root';

配置文件

  1. my.conf在/etc/my.conf

让外网可以访问

mysql默认是本地连接即外网是不能连接的,如果想让外网生效,如下操作:

  1. 进入 mysql:
    /usr/local/mysql/bin/mysql -u root -p
  2. 使用 mysql库
    use mysql;
  3. 查看用户表 :
    SELECT Host,User FROM user;
  4. 更新用户表 :
    UPDATE user SET Host = ‘%’ WHERE User = ‘root’ LIMIT 1;
  5. 强制刷新权限 :
    flush privileges;
    完成以上步骤即可远程连接数据库了,上边关键的一句是
    UPDATE user SET ‘Host’ = ‘%’ WHERE ‘User’ = ‘root’ LIMIT 1;
    其中%的意思是允许所有的ip远程访问,如果需要指定具体的某个ip就写上具体的ip即可
    当然这里使用的环境是阿里云,阿里云虚拟了防火墙叫“安全组”,在安全组里将3306端口添加进安全组规则里

删除无用用户

设置外网访问后,host变成%,意味着任何ip都能访问,而mysql.user表里,root用户设置了对应很多ip,其它设置就没用了。

select user,host, password, authentication_string from user where user='root';

mysql忽略表名大小写敏感

让MYSQL不区分表名大小写的方法其实很简单:
  1.用ROOT登录,修改/etc/my.cnf
  2.在[mysqld]下加入一行:lower_case_table_names=1
  3.重新启动数据库即可

mysql数据库安装的其它问题

1.Data:Dumper

当我们执行/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/时会报FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db,
所以我们需要先安装Data:Dumper
执行命令:

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

2.mysql无法初始化

执行"/scripts/mysql_install_db --user=mysql --datadir=/data/mysql"命令时报“Installing MySQL system tables…/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory”
因为少了依赖包libaio*
解决方法:yum install -y libaio*

3.启动MySql提示:The server quit without updating PID file(…)失败

执行启动服务命令“service mysqld start”命令时报“Starting MySQL…The server quit without updating PID file ([FAILED]al/mysql/data/mysql/izuf6hbmmjvremomylhk6kz.pid).”
解决方法:

  1. 可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限
    解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld!
    (本人就是这个方法解决的)
  2. 可能进程里已经存在mysql进程
    解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!
  3. 可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
    解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。
  4. mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
    解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data
  5. skip-federated字段问题
    解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。
  6. 错误日志目录不存在
    解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限
  7. selinux惹的祸,如果是centos系统,默认会开启selinux
    解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。

会安装自然要会卸载,这里分享一个关于linux卸载mysql的文章,写的不错。已经验证过。