mysql编译安装
里面有mysql如何安装,基础配置,一些简单的语句,只要你需要我这里都有,给新手安装减轻难度
- 安装依赖
yum install gcc gcc-c++ zlib zlib-devel openssl openssl-devel pcre* glibc-devel.x86_64 libaio* -y
- 编译安装mysql5.7(mysql8.0安装方式一样)
上传mysql安装包到任意目录然后解压,解压后将文件重命名到 /usr/local/mysql目录,目录位置可自定义
tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql
- 创建用户和用户组(不创建mysql无法启动),并授权mysql用户的权限
groupadd mysql
useradd -r -g mysql mysql
cd /usr/local/mysql && chown -R mysql:mysql ./
- 编译安装
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/
编译完成后会显示root用户的初始密码,一定要先保存下来,后面会用到。
- 授权,并将mysql添加到服务中,设置开机自动启动
chown -R root:root ./
chown -R mysql:mysql data
cp support-files/mysql.server /etc/init.d/mysql
chkconfig --add /etc/init.d/mysql
注:service mysql start (启动)service mysql stop(停止)service mysql start (查看状态)
- 将mysql命令添加到linux命令中,这样你使用下面命令时不需要进入mysql的bin目录中操作
ln -s /usr/local/mysql/bin/mysql /usr/bin/
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/
ln -s /usr/local/mysql/bin/mysqldump /usr/bin/
- 修改my.cnf文件
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
#server-id可以自定义
server-id=521
skip-name-resolve
# #设置3306端口
port = 3306
#mysql 二进制文件开启,二进制文件名
log-bin=mysql-bin
# # 设置mysql的安装目录
basedir=/usr/local/mysql
# # 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# # 允许最大连接数
max_connections=300
# # 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server = utf8mb4
# # 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
#skip-grant-tables 这个配置千万别开启,开启后mysql的密码就会失效,只在忘记密码时使用
#超时时间
wait_timeout=100
interactive_timeout=100
sql_mode='NO_ENGINE_SUBSTITUTION'
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
#lower_case_table_names=1表示不区分表大小写,0表示区分表大小写,注意mysql8.0以后该值在初始化时设置有效,一旦初始化修改my.cnf也不生效还会报错。
lower_case_table_names=0
- 启动mysql并修改root用户密码
service mysql start
mysql -uroot -p 回车后输入刚才记录的密码,输入后敲回车
这个时候操作什么都会报错,error 1820(HY000)
执行下面的命令
SET PASSWORD = PASSWORD('zf57wi?Kxuj!');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
提示下面信息说明成功
Mysql8.0需要执行的命令不太一样
ALTER USER 'root'@'localhost' IDENTIFIED BY 'QFkj@2019';
flush privileges;
- mysql基础语句,(所有操作后都需要执行flush privileges;否则不会生效)
创建数据库命令
create database 你的数据库名 default character set utf8mb4 collate utf8mb4_unicode_ci ;
注:数据库名如果有中划线(减号-),数据库名需要这样写 `你的数据库名`,个人不建议用中划线(减号-)。
创建用户
CREATE USER 'test'@'%' IDENTIFIED BY 'test@2024';
注:这样创建的用户任意地址都可以登陆
CREATE USER 'test'@'192.168.0.100' IDENTIFIED BY 'test@2024';
注:限制源IP为192.168.0.100的客户端可以登录该用户
CREATE USER 'test'@'192.168.0.%' IDENTIFIED BY 'test@2024';
注:限制源IP段为192.168.0.%的客户端可以登录该用户
Root用户不允许外部访问,只允许localhost或限定IP访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.100' IDENTIFIED BY
'root@2024' WITH GRANT OPTION;
授权test用户操作test数据库权限
GRANT ALL PRIVILEGES ON test .* TO 'test'@'%' WITH GRANT OPTION;
注:该语句授权了所有权限,注意这里的test用户是所有IP都能登陆的权限,如果需要限制,参考上面的用户权限。
授权test用户对test数据库只有查询权限
GRANT select ON test .* TO 'test'@'%' ;
- mysql备份数据库语句(实际情况中,无论使用任何工具导出sql文件在上传到目标服务器都十分慢,使用命令备份会很快)
多个数据库同时备份
mysql -e "show databases;" -h 192.168.0.100 -uroot -pabc_123 | grep -Ev "Database|information_schema|mysql|performance_schema|sys" | xargs -i mysqldump -h 192.168.0.100 -uroot -pabc_123 --flush-logs --quick --events --no-create-db --single-transaction --databases {} > /usr/local/back/mysql_back.sql
注:grep -Ev 表示排除show databases查询出来的数据库,--no-create-db不导出创建数据库语句。
单个数据库导出
mysqldump -h 192.168.0.100 -uroot -pabc_123 --flush-logs --quick --events --no-create-db --single-transaction --databases test > /usr/local/back/mysql_back.sql
注:--databases后面跟数据库名
导出数据库时,不导出某个表
mysqldump -h 192.168.0.100 -uroot -pabc_123 --flush-logs --quick --events --no-create-db --single-transaction --databases test --ignore-table=test.name > /usr/local/back/mysql_back.sql
注:--ignore-table=test.name不导出的数据库.表
导出带有条件的单表
mysqldump -h 192.168.0.100 -uroot -pabc_123 --databases test --skip-add-drop-table --skip-complete-insert --extended-insert --tables name --where="id>9293740" > name.sql
注:--where 筛选条件