安装步骤
1、检测下系统有没有自带的mysql:
yum list installed | grep mysql
如果已经有的话执行命令卸载已经安装的mysql
yum -y remove mysql-libs.x86_64
2.安装
wget http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
如果没有wget命令可以通过如下命令安装
yum install wget -y
3、添加选择yum源:
#添加到yum源
yum localinstall mysql57-community-release-el7-7.noarch.rpm
#查看可用和默认的yum源,这里默认的就是5.7
yum repolist all | grep mysql
4、安装mysql:
yum install mysql-community-server
5、启动mysql:
service mysqld start
#查看安装版本
mysqladmin --version
6、查看默认密码
grep -n password /var/log/mysqld.log
7、修改初始密码,允许远程访问
#本地连接数据库,输入刚刚获取的密码
mysql -u root -p
#修改默认密码,默认密码后续操作会报错
SET PASSWORD = PASSWORD('123456qwe@QWE');
#选择mysql库
use mysql;
#更新权限
update user set Host='%' where User='root';
生效:
FLUSH PRIVILEGES;
8、配置防火墙打开3306端口
systemctl start firewalld开启防火墙
#查看80端口是否开启
firewall-cmd --permanent --query-port=3306/tcp
#允许外部访问80端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#配置生效
systemctl restart firewalld.service
为root用户开放远程登录能力 (以下配置在上面的配置中用不上)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
配置mysql配置文件(以下配置在上面的配置中用不上)
执行 vim /etc/my.cnf 命令, 编辑这个文件 :
在/ect/my.cnf 中添加 : default-character-set=utf8
设置mysql开机启动
[root@lch software]# vim /etc/rc.local
在文件中添加 service mysqld start 即可
创建一个新的MySQL用户帐户
MySQL中的用户帐户由用户名和主机名部分组成。
要创建一个新的MySQL或MariaDB用户帐户,请运行以下命令,只需将’database_user’替换为您要创建的用户的名称即可:
CREATE USER 'database_user'@'localhost' IDENTIFIED BY 'user_password';
更改MySQL用户帐户密码
ALTER USER 'database_user'@'localhost' IDENTIFIED BY 'new_password';
列出所有MySQL用户帐户
SELECT user, host FROM mysql.user;
删除MySQL用户帐户
DROP USER 'database_user@'localhost';
授予MySQL用户帐户的权限
要通过特定数据库将用户帐户的所有权限扩大,请使用以下命令:
GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
要将所有权限扩展到所有数据库上的用户帐户,请使用以下命令:
GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
要通过数据库中特定的表格将所有权限提供给用户帐户,请使用以下命令:
GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
如果您只想授予特定数据库类型的用户帐户的特定权限,请执行以下操作:
GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';
撤销MySQL用户帐户的权限
REVOKE ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
查看修改mysql编码方式
show variables like 'character%';
SET character_set_server=‘utf8’;
SET character_set_database = ‘utf8’;
但是这样的修改,在数据库重新启动之后,数据库编码依然会还原,
此时可以用这个命令
set global character_set_server=utf8;
Query OK, 0 rows affected
mysql单条记录存储内容大小限制设置
1.使用命令
show VARIABLES like '%max_allowed_packet%'; 查看mysql默认设置的大小,
max_allowed_packet 就是限制大小的那一条记录
2.更改设置:使用命令
set global max_allowed_packet = 2*1024*1024*10或是在mysql配置文件my.cnf里:
设置max_allowed_packet = 20M注意:大小必须为1024的倍数,且最大为1g,修改完成后重启命令行查看是否修改成功
我使用的是mysql5.7.30
mysql遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题
报错
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘db_diary.t_diaryType.diaryTypeId’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
解决办法
打开navcat,
用sql查询
select @@global.sql_mode
查询出来的值为:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
去掉ONLY_FULL_GROUP_BY,重新设置值。
set @@global.sql_mode
=’STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
jdbc连接时使用:(解决中文乱码问题 当前使用mysql 5.7.30)
dbUrl=jdbc:mysql://203.195.161.34:3306/db_diary? useUnicode=true&characterEncoding=UTF-8
补充:
Linux下MySQL的几个重要的目录:
数据库目录 /var/lib/mysql/
配置文件 /usr/share /mysql(mysql.server命令及配置文件)
相关命令 /usr/bin(mysqladmin mysqldump等命令)
启动脚本 /etc/rc.d/init.d/(启动脚本文件mysql的目录)