服务器部署mysql
1、参考:https://blog.csdn.net/qq_41606459/article/details/84550301
服务器安装部署mysql
1、官网下载地址:https://www.mysql.com/downloads/
2、将 mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 上传到 /usr/local 目录下(可以使用wget下载不同版本)
将 安装包进行解压:登录服务器,cd /usr/local/ 下执行:tar -xzf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 进行解压,
然后重命名:
mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql
此时解压完的文件名为 mysql
这个时候达到的效果是/usr/local/mysql/..(一堆解压开的文件)
3、添加用户组和用户
#添加用户组
groupadd mysql
#添加用户mysql 到用户组mysql
useradd -g mysql mysql
4、安装
#在/usr/local/mysql目录下新建data文件夹,以后的数据库文件将放在这里
mkdir data
依次执行以下命令:
chown -R mysql:mysql ./
#mysql_install_db 被废弃了,取而代之的是 mysqld –-initialize
./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
#将mysql/目录下除了data/目录的所有文件,改回root用户所有
[root@ mysql]# chown -R root .
#mysql用户只需作为mysql/data/目录下所有文件的所有者
[root@instance_4dbde0 mysql]# chown -R mysql data
#复制启动文件
[root@instance_4dbde0 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@instance_4dbde0 mysq]# chmod 755 /etc/init.d/mysqld
[root@instance_4dbde0 bin]# cp /usr/local/mysql/bin/my_print_defaults /usr/bin/
#修改启动脚本
[root@instance_4dbde0 mysql]# vim /etc/init.d/mysqld
#修改项:
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
port=3306
#启动服务
[root@instance_4dbde0 mysql]# service mysqld start
#加入环境变量,编辑 /etc/profile,这样可以在任何地方用mysql命令了
[root@instance_4dbde0 mysql]# vim /etc/profile
#添加mysql路径
export PATH=$PATH:/usr/local/mysql/bin
#刷新立即生效
[root@instance_4dbde0 mysql]# source /etc/profile
配置以上信息之后,基本就可以启动了mysql(如果不能启动,请看最后的配置文件),但是现在还缺少mysql的配置文件,即my.cnf文件(没有它Mysql也可以使用内置的默认参数启动),最后说
接下来就可以使用命令登录mysql了
[root@instance_4dbde0 bin]# mysql -uroot -p
Enter password: -- 此时不知道密码,所以,直接先改my.cnf配置文件
#如果登不进去,则改my.cnf配置文件,跳过验证登录,在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,如下图所示:
vim /etc/my.cnf 添加 skip-grant-tables
#重新启动,登录
ps -ef | grep mysql
kill -9 (进程号)
service mysqld start
mysql -uroot
#修改密码
use mysql;
update user set authentication_string=password("新密码") where user='root';
flush privileges;
exit;
登录:
cd到mysql:usr/local/mysql/bin 下
输入命令:mysql -uroot -p
输入密码:123456
展示库:show databases;
使用库:use mysql;
创建表:create table users(id int primary key auto_increment,name varchar(255));
③注意:查看表结构:desc users; (这些执行命令都要封号 ; 结束,回车才行)
insert into users (id,name) values (1,"小明");
insert into users (id,name) values (1,'xiaoming');
注意:为什么输入中文会报错,输入英文就成功了?
原因:因为数据表中的内容为latin1字符集,latin1字符集为8bit,这说明它是不能表示中文的,因此会有报错。
修改库字符集:alter database mysql character set utf8;
修改表字符集:alter table users character set utf8;
修改字段字符集:alter table users change name name varchar(20) character set utf8;
现在可以尝试添加中文字段了,成功
查看表中内容: select * from users;
查看users表中前2行的内容: select * from users order by id limit 0,2
删除表:drop table users;
以上参考:https://blog.csdn.net/c_faith/article/details/117289974
开启MySQL远程访问权限 允许远程连接
参考:https://www.cnblogs.com/weifeng1463/p/7941625.html
注意:服务器mysql用到的端口得开放,能访问才行哟
1、实现远程连接(改表法)-- 建议这个,比较快,还不会报错
use mysql;
update user set host = '%' where user = 'root';
这样在远端就可以通过root用户访问Mys
如果报以下错误:
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 不予理会
执行:
flush privileges; 即可重新连接
------------------------------
mysql连接报错
则参考:https://blog.csdn.net/liulangshusheng2012/article/details/80347919 内容复制为以下
记录一次数据库版本升级5.7遇到的问题
问题1:
'performance_schema.session_variables' doesn't exist
'performance_schema.session_status' doesn't exist
解决:
临时生效(重启后需要再次执行,不需要重启数据库)
登录mysql里执行
set @@global.show_compatibility_56=ON;
永久生效(需重启数据库)
[mysqld]
show_compatibility_56 = ON
performance_schema
问题2:
上面的问题解决后在后来的一次sql语句执行时发现,GROUP BY 不支持
分析:
SELECT VERSION(), @@sql_mode
发现 里面 有 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'
解决:
修改my.ini配置文件,增加以下配置,重启mysql服务
[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
————————————————