
直接开始,这里是使用的最新的mariadb-10.5.4版本的,有需要的按照步骤一步一步来,有三种方法安装,yum安装,二进制包安装,源码编译安装,这里yum就不提了,直接使用yum install mariadb-server 就可以了,我们主要介绍另外两种,还有他们的多实例实现。
二进制安装MariaDB
- 1.下载
在mariadb.org
mariadb-10.5.4-linux-x86_64.tar.gz - 2.创建用户
useradd -r mysql -s /sbin/nologin - 3.解压到指定目录(必须在这)
tar xzf mariadb-10.5.4-linux-x86_64.tar.gz -C /usr/local/ - 4.创建软链接
cd /usr/local
ln -s mariadb-10.5.4-linux-x86_64/ mysql - 5.修改所有者
chown -R mysql.mysql mysql/ - 6.将启动二进制程序路径加入PATH变量
echo ‘PATH=/usr/locat/mysql/bin:$PATH’ > /etc/profile.d/mysql.sh - 7.使配置文件生效
. /etc/profile.d/mysql.sh - 8.创建存放数据库文件的文件夹
建立新分区 最好是逻辑卷,强的扩展性,读取性 - 9.把文件夹的所有者改为mysql
chown -R mysql.mysql /MariaDB - 10.修改权限
chmod 770 /MariaDB - **11.安装
在/usr/local/mysql/scripts
有一个mysql_install_db
mysql_install_db –help 查看帮助
需要加最重要的两项
–datadir=数据库安装路径
–user=mysql
需要注意如果在/usr/local/mysql/scripts/路径下执行:
./mysql_install_db –datadir=/MariaDB –user=mysql
会有错误
只能返回到
/usr/local/mysql目录下来执行
scripts/mysql_install_db –datadir=/MariaDB –user=mysql
如果这里有报错
./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
然后执行
scripts/mysql_install_db –datadir=/MariaDB –user=mysql
就会是OK了**
- 12.修改配置文件
进入/usr/local/mysql/support-files目录,根据需求拷贝不同内存大小的模版
修改datadir=/data/mariadb
由于版本问题 10.5到二进制安装没有模版
自己写
vim /etc/my.cnf
[mysqld]
port=3306
datadir=/data/mariadb/
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/data/mariadb/mariadb.log
pid-file=/data/mariadb/mariadb.pid
[client]
port=3306
socket=/tmp/mysql.sock
default-character-set=utf8 - 13.添加服务脚本
进入/usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysqld
Chkconfig –add mysqld - 14.安全初始化
mysql_secure_installation
多实例
- 1.安装
yum install mariadb-server - 2.创建不同端口的配置文件目录
mkdir -p /mariadb/{3306,3307,3308} - 3.创建每个目录下的配置文件
mkdir /mariadb/{3306,3307,3308}/{etc,socket,pid,log,data} - 4.修改目录所有者和权限
chown -R mysql.mysql /mariadb/ - 5.生成默认数据库文件
mysql_install_db –datadir=/mariadb/3306/data/ –user=mysql [–basedir=如果是源码编译这里需要指定安装包位置,mysql -e ‘show variables like “basedir”;’ 来查询]
mysql_install_db –datadir=/mariadb/3307/data/ –user=mysql
mysql_install_db –datadir=/mariadb/3308/data/ –user=mysql - 6.修改配置文件
Cp /etc/my.cnf /mariadb/3306/etc/
Cp /etc/my.cnf /mariadb/3307/etc/
Cp /etc/my.cnf /mariadb/3308/etc/
挨个修改
[mysqld]
port=3306
datadir=/mariadb/3306/data
socket=/mariadb/3306/socket/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/mariadb/3306/log/mariadb.log
pid-file=/mariadb/3306/pid/mariadb.pid - 其他同理*
- 7.写启动脚本
加执行权限,因为有密码所以设置为700
这里附上我写的简单脚本,有需要再进行修改
#!/bin/bash
port=3306
mysql_user="root"
mysql_pwd=""
cmd_path="/app/mysql/bin"
mysql_basedir="/mysqldb"
mysql_socket="${mysql_basedir}/${port}/socket/mysql.sock"
. /etc/init.d/functions
func_start_mysql() {
if [ ! -e "${mysql_socket}" ];then
action "Starting MySQL..."
${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
if [ $? -eq 0 ];then
action "MySQL is running..."
else
action "Start failed" /bin/false
fi
else
echo -e "\e[1;32mMySQL is running...\e[0m"
#exit
fi
}
func_stop_mysql() {
if [ ! -e "${mysql_socket}" ];then
echo -e "\e[1;31mMySQL is stopped...\e[0m"
#exit
else
action "Stoping MySQL..."
${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_socket} shutdown
if [ $? -eq 0 ];then
action "MySQL is stopped..."
else
action "Stop failed" /bin/false
fi
fi
}
func_restart_mysql() {
echo -e "\e[1;32mRestarting MySQL...\e[0m"
func_stop_mysql
sleep 2
func_start_mysql
action "MySQL is resatrt..."
}
case $1 in
start)
func_start_mysql
;;
stop)
func_stop_mysql
;;
restart)
func_restart_mysql
;;
*)
printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac
这里需要注意,在不同实例中,需要把上面的port参数进行修改,使用绝对路径,/mariadb/3306/这个脚本名称 start/restart/stop 来进行操作
- 8.设置3306的密码为1
/usr/bin/mysqladmin -S /mariadb/3306/socket/mysql.sock password “1”
其他同理
查询账号密码
select user,password,host from mysql.user;
修改root密码
update mysql.user set password=password(“1”) where user=”root”;
password(“1”)的作用是把密码1加密,
删除账号密码
删除最后一行
drop user “”@centos7;
使修改生效
flush privileges;
刷新权限
编译安装
- 1.生成用户
useradd -r -s /sbin/nologin mysql - 2.安装工具包组
yum groupinstall “development tools” - 3.创建安装目录
mkdir /app - 4.安装cmake
yum install cmake - 5.下载源码包
yum install wget -y
wget https://downloads.mariadb.org/interstitial/mariadb-10.5.4/source/mariadb-10.5.4.tar.gz/from/http%3A//mirrors.tuna.tsinghua.edu.cn/mariadb/ - 6.下载下来的包改名
mv index.html mariadb-10.5.4.tar.gz - 7.解压
tar xf mariadb-10.5.4.tar.gz - 8.创建存放数据库的目录
mkdir /mysqldb - 9.修改所有者,权限
chown -R mysql.mysql /mysqldb/ - 10.进入安装包
cd mariadb-10.5.4 - **11.开始编译
cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql
-DMYSQL_DATADIR=/mysqldb/
-DSYSCONFDIR=/etc
-DMYSQL_USER=mysql
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DWITHOUT_MROONGA_STORAGE_ENGINE=1
-DWITH_DEBUG=0
-DWITH_READLINE=1
-DWITH_SSL=system
-DWITH_ZLIB=system
-DWITH_LIBWRAP=0
-DENABLED_LOCAL_INFILE=1
-DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci**
==过一会会有==
CMake Error at cmake/ssl.cmake:156 (MESSAGE):
Cannot find appropriate system libraries for SSL. Use WITH_SSL=bundled to
enable SSL support
Call Stack (most recent call first):
CMakeLists.txt:384 (MYSQL_CHECK_SSL)
– Configuring incomplete, errors occurred!
See also “/root/mariadb-10.5.4/CMakeFiles/CMakeOutput.log”.
See also “/root/mariadb-10.5.4/CMakeFiles/CMakeError.log”.
==这样的报错,需要安装依赖
yum install openssl-devel
安装好之后,按上箭头找到刚刚的命令继续执行==
==又会遇到==
CMake Error at cmake/readline.cmake:65 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:185 (FIND_CURSES)
CMakeLists.txt:386 (MYSQL_CHECK_READLINE)
– Configuring incomplete, errors occurred!
See also “/root/mariadb-10.5.4/CMakeFiles/CMakeOutput.log”.
See also “/root/mariadb-10.5.4/CMakeFiles/CMakeError.log”.
==这样的错误
先安装包
yum install ncurses-devel
安装好之后
接着 执行
rm -f CMakeCache.txt
就可以啦==
12.安装
make && make install13.添加环境变量
echo ‘PATH=/app/mysql/bin/:$PATH’ > etc/profile.d/mysql.sh14.生成数据库
/app/mysql/scripts/mysql_install_db –basedir=/app/mysql –datadir=/mysqldb/data –user=mysql
Chown -R mysql.mysql /mysqldb/data15.复制主配置文件
cp /app/mysql/support-files目录下找一个配置文件 /etc/my.cnf
Vim /etc/my.cnf
添加
datadir=/mysqldb/data
没有模版自己写
vim /etc/my.cnf
[mysqld]
port=3306
datadir=/mysqldb/data
socket=/app/mysql/mysql.sock
[mysqld_safe]
log-error=/mysqldb/mariadb.log
pid-file=/mysqldb/mariadb.pid
[client]
port=3306
socket=/app/mysql/mysql.sock
default-character-set=utf816.复制服务脚本
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld17.添加到chkconfig
Chkconfig –add mysqld18.权限处理
chgrp -R mysql /app/mysql/
Chmod -R 775 /app/mysql/19.启动
service mysql start
- 破解mysql口令
vim /etc/my.cnf
添加
skip_grant_tables
就不需要密码来
进去数据库之后
使用update来修改
update mysql.user set password=password(“1”);
使用delete来删除
delete from mysql.user where host=”::1”;
创建用户
creat user yang@”192.168.1.%” indetified by ‘1’;
规定只可以在192.168.1.0网段连接 密码为1 - **查看连接者(进程)
show processlist;
mysql用户账号由两部分组成: ‘USERNAME’@’HOST‘
说明: HOST限制此用户可通过哪些远程主机连接mysql服务器 支持使用通配符:
% 匹配任意长度的任意字符
172.16.0.0/255.255.0.0 或 172.16.%.%
_ 匹配任意单个字符**
- desc 查看表结构
- 创建数据库:
- CREATE DATABASE|SCHEMA [IF NOT EXISTS]
‘DB_NAME’;
CHARACTER SET ‘character set name’ COLLATE ‘collate name’* - 删除数据库
DROP DATABASE|SCHEMA [IF EXISTS] ‘DB_NAME’;
查看支持所有字符集:SHOW CHARACTER SET;
查看支持所有排序规则:SHOW COLLATION;
获取命令使用帮助:
mysql> HELP KEYWORD; - 查看数据库列表:
mysql> SHOW DATABASES; - 创建表:CREATE TABLE
(1) 直接创建
(2) 通过查询现存表创建;新表会被直接插入查询而来的数据
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,…)] [table_options]
[partition_options] select_statement
(3) 通过复制现存的表的表结构创建,但不复制数据
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) }
==注意:
Storage Engine是指表类型,也即在表创建时指明其使用的存储 引擎,同一库中不同表可以使用不同的存储引擎
同一个库中表建议要使用同一种存储引擎类型==
CREATE TABLE [IF NOT EXISTS] ‘tbl_name’ (col1 type1 修饰符, col2 type2 修饰符, …) - 字段信息*
• col type1
• PRIMARY KEY(col1,…) • INDEX(col1, …)
• UNIQUE KEY(col1, …)
表选项:
- ENGINE [=] engine_name
SHOW ENGINES;查看支持的engine类型 - ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT |COMPACT}
- 获取帮助:mysql> HELP CREATE TABLE;
查看所有的引擎:SHOW ENGINES
查看表:SHOW TABLES [FROM db_name]
查看表结构:DESC [db_name.]tb_name
删除表:DROP TABLE [IF EXISTS] tb_name
查看表创建命令:SHOW CREATE TABLE tbl_name
查看表状态:SHOW TABLE STATUS LIKE ‘tbl_name’
查看库中所有表状态:SHOW TABLE STATUS FROM db_name* - explain 用于查看SQL语句解释执行的步骤 用于语句优化,建议在客户端配置文件加
- safe-updates 不能批量修改数据 只能使用where子句 比较安全
或者在连接的时候使用-U选项
mysql -uroot -p1 -U
cat /etc/my.cnf.d/client.cnf
[client]
safe_updates - Order by 排序的时候
asc 正序
desc倒序
但是排序之后会发现 NULL会排在数字前面
这个时候使用
order by -字段 desc;
就会把NULL弄到后面去 - limit 4 只显示四行
limit 4,6 跳过前四个显示6行