阿里云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
得到的结果如下:
说明并没有给我默认安装mysql数据库
下载
- 从mysql官网下载tag.gz格式的mysql文件,
- 执行
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';
配置文件
- my.conf在/etc/my.conf
让外网可以访问
mysql默认是本地连接即外网是不能连接的,如果想让外网生效,如下操作:
- 进入 mysql:
/usr/local/mysql/bin/mysql -u root -p - 使用 mysql库
use mysql; - 查看用户表 :
SELECT Host,User FROM user; - 更新用户表 :
UPDATE user SET Host = ‘%’ WHERE User = ‘root’ LIMIT 1; - 强制刷新权限 :
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).”
解决方法:
- 可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限
解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld!
(本人就是这个方法解决的) - 可能进程里已经存在mysql进程
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld! - 可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。 - mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data - skip-federated字段问题
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。 - 错误日志目录不存在
解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限 - selinux惹的祸,如果是centos系统,默认会开启selinux
解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。
会安装自然要会卸载,这里分享一个关于linux卸载mysql的文章,写的不错。已经验证过。