Mysql单机部署

2021/03/11

Mysql单机部署

参考资料

  • 官网地址:https://www.mysql.com/
    • https://dev.mysql.com/
  • 下载地址:https://www.mysql.com/downloads/
    • https://dev.mysql.com/downloads/mysql/
  • 文档地址:

一、windows安装mysql

问题记录:

1.装 微软常用运行库合集_2019.07.20_X64.exe  //网上搜、网盘已上传

2.忘改临时密码,且临时密码失效:通过命令行修改  
mysql -u root -p  
alter user user() identified by "root";

二、Linux安装mysql

1.检查卸载旧版本

## 检查系统版本: (64位还是32位)    
 cat /etc/system-release  
 uname -a

## 检查是否安装mysql  
rpm -qa mysql*   //rpm     检查  
yum list mysql*   //yum      检查

## 卸载mysql(如果没安装mysql直接跳过此步骤)  
yum remove mysql*  //yum     卸载  
rpm -e mysql*  //rpm     卸载  

备注:这个只能适用于用yum安装的mysql,如果是用安装包安装的直接将安装包删除。

2.离线包安装不依赖外网

## 官网下载安装包、解压: 
https://dev.mysql.com/downloads/mysql/
  
1.将下载好的mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz上传到usr/local/mysql目录下(如果没有该目录可以依次建文件夹)

2. .tar.xz解压是  tar -xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
   .tar.gz解压是  tar -zvxf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz

## mysql安装
1.重命名解压文件:进入mysql文件夹执行命令:mv mysql-8.0.17-linux-glibc2.12-x86_64 mysql
移动重命名后文件内的所有文件:进入重名名的mysql文件夹执行命令:mv * usr/local/mysql 
将刚刚空了的mysql文件夹删除;最后的结果mysql可执行文件bin的全路径应该是usr/local/mysql/bin

2.为系统添加mysql 组和用户:
groupadd mysql
useradd -r -g mysql mysql 

3.进入 /usr/local/mysql 目录下, 修改当前目录为mysql用户
修改相关权限:chown -R mysql:mysql ./   

4.如果你/etc下没有my.cnf文件, 新建一个/etc/my.cnf
## 新建一个文件
touch /etc/my.cnf 
## 赋予权限
chmod 755 my.cnf  

5.my.cnf 的信息如下
[mysqld]
#设置表名大小写不敏感
lower_case_table_names=1

# 连接超时wait_timeout设置
wait_timeout=1800
interactive_timeout=1800

#设置mysql安装目录
basedir=/usr/local/mysql

#设置mysql数据库的数据存放目录
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock

#设置mysql的日志文件位置(这个配置文件先不要放开,不然会报找不到Mysql.log文件,等启动后再放开,在重启)
#log-error=/var/log/mysql.log

#注意了,小细节,这里的 $hostname 是linux的主机名。一般每个人主机名都是不一样的。
pid-file=/usr/local/mysql/data/$hostname.pid
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

6.mysql初始化操作,记录下临时密码,之后第一次登录的时候会用到。
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
//运行完成会生成一个暂时的密码

7.为mysql配置环境变量。 vim /etc/profile // 打开profile文件在最后追加下面命令
export MYSQL_HOME
MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/lib:$MYSQL_HOME/bin

退出后让其立马生效命令:source /etc/profile

8.设置为开机自启动项,依次执行下面代码
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql  //添加可执行权限。
chkconfig --add mysql  // 注册启动服务
输入chkconfig --list //查看是否添加成功。
 
9.启动msyql,并登陆
service mysql start //开启服务器。

注意:如果启动报了pid找不到的错误,直接把my.cnf中pid-file=/usr/local/mysql/data/$hostname.pid删掉,在启动就可以了

mysql -uroot -p //登录进入mysql,然后提示输入密码。

10.输入初始化过程中生成的临时密码,然后回车就行。进入一下页面。

11.进入mysql后,修改密码。不然你什么也做不了。
alter user 'root'@'localhost' identified by 'your_password';
其中'your_password'是你设置的新密码

11.创建远程操作账户,进行远程访问的授权,并更新权限,依次执行以下代码:
create user 'root'@'%' identified with mysql_native_password by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;

备注:如果创建远程账号的密码错了,修改方法点击这里https://blog.csdn.net/qq_36631900/article/details/103404515

12.本地用telnet连接测试下能否连接,命令是:telnet 你安装数据库的服务器ip 3306
如果直接进入全黑界面,这就代表远程访问成功,或者你也可以用navicat连接尝试

三、常用命令操作

  • 登录: mysql -uroot -p
  • 查看库:show databases;
  • 切换库: use test_db;
  • 查看表:show tables;
  • 查看表DDL:desc t_student;
  • 查看版本信息
    • 1 在命令行登录mysql,即可看到mysql的版本号
    • 2.在命令行使用status查看
    • 3.mysql> select version();
  • grant 用户授权
mysql> grant all privileges on testdb.* to 'userA'@'%' identified by '123456' with grant option;
  • 预查看执行计划:mysql-v8.0以上支持树状结果查看
EXPLAIN FORMAT=tree
SELECT name from t_student where sex = 'man' and score > 95 ORDER BY score desc;

  • 查看执行计划:
EXPLAIN ANALYZE 
SELECT name from t_student where sex = 'man' and score > 95 ORDER BY score desc;
  • 账号、授权、删除…
# 创建账号
CREATE USER 'readUser'@'%' IDENTIFIED BY '123456';
use mysql;
#授权库
GRANT SELECT ON apolloconfigdb.* TO 'readUser'@'%';
GRANT Select ON `xx-web`.* TO 'readUser'@'%'; //带-的需要引号
#GRANT SELECT ON `xx-web`.* TO 'readUser'@'%' WITH GRANT OPTION;
#GRANT SELECT ON `xx-web`.* TO 'readUser'@'%' IDENTIFIED BY '123456';

flush privileges;

#查询权限
SHOW GRANTS FOR readUser;
#查询用户表
SELECT user,host FROM mysql.user;

#删除所有授权
REVOKE all privileges ON *.* FROM 'readUser'@'%';
EVOKE Select ON apolloconfigdb.* FROM 'readUser'@'%';

#重置密码
set password for 'readUser'@'%' = password('123');

#删除账号
DROP USER 'readUser'@'%'
  • 统计库、表、大小、记录数
-- 查询所有库大小
SELECT table_schema 'DB',sum( data_length + index_length ) / 1024 / 1024 as 'DBSize (MB)'
FROM information_schema.TABLES
GROUP BY table_schema ;

-- 查询指定库 所有表大小
SELECT table_schema as 'DB', table_name AS 'Table', 
       ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Size (MB)' 
FROM information_schema.TABLES 
WHERE table_schema like 'demo-%';

-- 查询指定库 所有表记录数
SELECT table_schema as 'DB', table_name AS 'Table', table_rows
FROM information_schema.TABLES 
WHERE table_schema like 'demo-%';

-- 查询information_schema: 所有表,tables表、字段表
use information_schema;
show tables;
select * FROM  information_schema.TABLES;
select * FROM  information_schema.columns;

四、mysql常见问题汇总

1.数据库链接数太多:too many connection,修改链接超时时间

show processlist;
show global variables like '%timeout%';
show session variables like '%timeout%';
show global variables like 'wait_timeout';  
set global wait_timeout=1800;
set global interactive_timeout=1800;
set session wait_timeout=600;
set session interactive_timeout=600;

2.大小写敏感,修改my.cnf 的信息如下

[mysqld]
#设置表名大小写不敏感
lower_case_table_names=1

3.MySQL主从同步相关-主从多久的延迟
使用master_delay选项可以控制延迟,使用change master to可以设定延迟多少秒,mysql复制默认延迟是0秒

4.mysql主从不同步

# 到Slave上查看
mysql> show slave status;
Slave_IO_Running: Yes
Slave_SQL_Running: No

可见是Slave-sql不同步,查看是否有error信息 

5.Last_SQL_Error: Error ‘Unknown database’ ApolloConfigDB…
大写库表同步sql执行失败, 先stop slave;
然后手动创建库;
再start slave; // 或者先收到备份恢复,直接从主库dump,到从库上执行sql

问题记录

Post Directory

扫码关注公众号:暂无公众号
发送 290992
即可立即永久解锁本站全部文章