Mysql:
安装:
安装官方 yum源码
rpm -Uvh https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm
使用Yum安装服务端及客户端 (客户端已经包含在服务端)
yum install -y mysql-community-server mysql
安装完成后查看初始密码
grep 'password' /var/log/mysqld.log
源码安装:
安装编译环境:
yum -y install gcc gcc-c++ glibc automake autoconf libtool make ncurses-devel
下载好源码包
wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.25.tar.gz
wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5.tar.gz
先安装cmake:
yum安装:
yum install -y cmake
源码安装:
先解压,切换到解压目录,运行以下命令进行编译与安装
./bootstrap | gmake | gmake install
安装完成后查看版本检测是否安装成功
cmake -version
解压boost库到/usr/local目录,
创建mysql安装的相关目录,用户,并禁止登陆用户
mkdir -p /data/mysql/{data,tmp,binlog,logs}
groupadd mysql
useradd mysql -s /bin/nologin -M -g mysql
解压mysql源码包,并切换到该目录运行以下命令进行编译及安装
cmake . -DOMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql/data \
-DMYSQL_UNIX_ADDR=/data/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCALINFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT__EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0 \
-DWITH_BOOST=/usr/local/boost && make install
初始化mysql
将安装目录及配置文件/etc.my.cnf的所有者及组更改为mysql
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /etc/my.cnf
修改/etc/my.cnf配置文件,修改前请备份,此配置文件为非必须配置,可根据需求修改
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/data
pid-file = /data/mysql/mysql.pid
log_error = /data/mysql/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/mysql/mysql-slow.log
skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 1024M
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 8K
read_buffer_size = 768K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
query_cache_size = 16M
tmp_table_size = 32M
performance_schema_max_table_instances = 1000
explicit_defaults_for_timestamp = true
skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
log_bin=mysql-bin
binlog_format=mixed
server_id = 232
expire_logs_days = 10
early-plugin-load = ""
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M
配置文件解析
[client]
#默认连接端口
port = 3306
#用于本地连接的socket套接字
socket = /database/mysql/tmp/mysql.sock
#编码
default-character-set = utf8
[mysqld]
#服务端口号,默认3306
port = 3306
#mysql 启动用户
user = mysql
#mysql安装根目录
basedir = /database/mysql
#mysql数据文件位置
datadir = /database/mysql/data
#pid文件所在目录
pid-file = /database/mysql/mysqld.pid
#为mysql客户端程序和服务器之间的本地通讯指定一个套接字文件
socket = /database/mysql/tmp/mysql.sock
#mysql存放临时文件的目录
tmpdir = /database/mysql/tmp
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character_set_server = utf8
#mysql服务的唯一编号,每个mysql服务ID需唯一
server-id = 1
#最大连接数
max_connections = 100
#最大错误连接数
max.connect_errors = 10
#开启二进制日志功能,binlog数据位置
log-bin = /database/mysql/binlog/mysql-bin
#mysql生成的错误日志存放路径
log-error = /database/mysql/logs/mysql_5_7_25.err
初始化mysql数据库
运行安装目录的bin目录下的mysqld文件
./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
注:到这一步很容易出问题,在初始化的时候一定要加上面的参数,而且在执行这一步操作前/data/mysql/data 这个目录必须是空的;在这里指定的basedir 和 datadir 目录必须要和/etc/my.cnf 配置的目录一直才行。
--initialize-insecure
生成初始化密码参数(5.7版本才有) ,必须要添加,否则会初始化失败,会生成空密码
-user=mysql
设定初始化用户
--basedir=/database/mysql
设定数据文件目录
--datadir=/database/mysql/data
配置ssl链接
./mysql_ssl_rsa_setup --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
到数据目录/database/mysql/data下修改pem权限
如果不给server-key.pem其他用户和组可读权限时,当启动数据库会报以下错误
[ERROR] SSL error:Update to get private key from 'server-key.pem'
chmod +r server-key.pem
启动数据库
添加到系统服务
拷贝mysql/support-file目录下的mysql.server启动脚本到/etc/init.d 目录下,并改名为mysqld
添加PATH变量,支持mysql命令
cp support-files/mysql.server /etc/init.d/mysqld
systemctl daemon-reload
echo 'PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile
mysql数据库基本优化(安全)
账户设置密码,添加额外的管理员,重新加载mysql授权表
授权zel@localhost用户拥有所有权限,并设置为管理员,注:未创建账号会自动创建
grant all privileges on . to zel@localhost identified by '0Zelt.cn' with grant option;
进入数据库后命令需要以分号结尾
启动服务并登陆数据库,不加-u参数,默认为登陆root
systemctl start mysqld
mysql -p
修改root密码,
alter user 'root'@'localhost' identified by '0Zel.com' ;
#修改密码
创建一个数据库,并设置字符为utf8
create database zel character set utf8 collate utf8_bin;
查看已建立数据库
show databases;
授权数据库(权限):
grant select,insert,update,delete,create,drop,alter,index on zel. to 'zel'@'localhost' identified by '0Zel.com';
grant select,insert,update,delete,create,drop,alter,index on 库名称. to 'test'@'localhost' identified by '密码'
该命令为赋予test用户对某个库拥有什么权限
insert输入,update更新,delete删除,create建立,drop,alter更改,index
要给IP段设置权限,把主机名修改为IP地址即可:
例如给zel用户能够使用10.0.0.0段对mysql所有库,表具有privilegs权限,管理员权限
grant all privillegs on . to zel@'10.0.0.%' identified by '0Zelt.cn' with grant option;
mysql 使用 grant 命令对账户进行授权,grant 命令常见格式如下
grant 权限 on 数据库.表名 to 账户@主机名 对特定数据库中的特定表授权
grant 权限 on 数据库.* to账户@主机名 对特定数据库中的所有表给与授权
grant 权限1,权限2,权限3 on . to 账户@主机名 对所有库中的所有表给与多个授权
grant all privileges on . to 账户@主机名 对所有库和所有表授权所有权限
授予用户最大的权限,所有的权限 grant all privileges on . to username@'%' identified by ' password';
授权完毕后刷新数据库
flash privileges;
查看用户的权限
show grants for 'zel'@'localhost';
MariaDB:
安装
yum -y install mariadb mariadb-server
如果没有软件源,请添加官方的yum源,yum源目录/etc/yum.repo.d/
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64
gpgkey = https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
安装完成后启动服务
systemctl start mariadb
首次运行需要进行初始化设置
mysql_secure_installation
Enter current password for root (enter for none): #输入root密码 初始无密码,直接回车即可
Switch to unix_socket authentication [Y/n] Y #是否切换到加密模式
Change the root password? [Y/n] Y #是否更改root密码
New password: #输入密码
Re-enter new password: #再次输入密码
Remove anonymous users? [Y/n] y #是否删除匿名用户
Disallow root login remotely? [Y/n]
是否允许root远程登录 按需求选择
Remove test database and access to it? [Y/n]
y #是否删除test数据库,
Reload privilege tables now? [Y/n] y #是否重新加载权限表
进入数据库,命令与mysql一样
mysql -p
设置utf8编码:
修改 /etc/my.cnf 文件,添加下列配置
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
进入数据库后,命令与mysql一样?
目前大部分一样(后期看情况修改)
修改root密码
set password =PASSWORD('密码');
创建tests数据库,并设置为utf8编码
create database tests;
进入tests数据库
use tests;
在当前数据库中创建一个test的表单
create table test(id int ,name char(32));
查看test表单是否创建成功,并查看
show tables;
desc test;
添加数据,该命令为在test表单中添加一条id跟name的数据
insert into test(id,name) values(1,'zero'),(2,'one');
然后查看test表单中的数据,
select id,name from test;
删除test中ID为2的数据
delete from test where id=2;
修改\更新test表中ID为1的数据,将name改成tests
update test set name='tests' where id=1;
权限修改与SQL一样
创建一个zero用户
create user zero@'%' identified by 'zero' ;
赋予zero对所有库拥有创建权限
`grant create on . to zero@"%" identified by 'zero';
重新登陆数据库,使用zero用户验证,验证完成后使用root删除用户
drop user zero;
暂无评论内容