- 프로젝트에서 사용했던 DB를 import 한 후 테이블은 정상적으로 select가 가능했는데
일부 view는 실행되지 않고 아래와 같은 오류가 났다.
1045 에러는 아이디 또는 패스워드가 맞지 않거나, 그 계정에 지정된 접속가능한 대역(Host)이 아닌 경우에 난다고 한다.
[해결법]
1. mysql path설정
open -t .bash_profile |
위 구문을 터미널에 입력해 주면. bash_profile 창이 새로 뜨는데
export PATH=${PATH}:/usr/local/mysql/bin/ |
위와 같이 이 구문을 입력해 준 후 저장해 준다.
터미널에 한번 더 구문을 입력하여 환경변수로 저장해 준다 (-> mysql경로로 들어가지 않고 구문을 바로 사용할 수 있음)
mysql -u root -p |
비밀번호 입력 후 성공한 메세지
show databases; |
2. 비밀번호 변경
mysql> use mysql |
mysql> alter user '유저명'@'%' identified by '바꿀 비밀번호'; |
mysql> select host, user, plugin, authentication_string, password_last_changed from user; |
- 그 이후에 뜬 Error Code:1227
Error Code: 1227. Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation |
[해결법]
1 . DEFINER 변경
definer는 create로 만들 때 만든 user를 definer로 설정한다고 되어 있었다.
프로젝트를 여럿이서 만들어서 그런 건지 확인해 보니 조금씩 달랐고 이 이유 때문에 select가 되지 않는 듯 해 모두 변경하였다.
그 결과 몇 개의 뷰는 제대로 결과가 출력됐지만 여전히 안 되는 뷰가 여전히 존재..
결국
2. view 삭제 후 다시 생성
테이블은 정상적으로 넘어왔기 때문에 조회되지 않는 뷰는 삭제 한 다음 생성하니 데이터가 모두 잘 출력되었다
1227 error와 관련하여 difiner설정하는 포스팅을 찾아보았지만 해결할 수 없어 결국 야매로 해결한 후기이다 😂
* 참고로 difiner를 수정하지 않았더니 권한 문제로 drop view조차 오류가 났었다
[view 생성 구문]
create view view_check as
SELECT c.*,date_format(sta_employ,"%Y-%m-%d") employ_start,
date_format(sta_end,"%Y-%m-%d") employ_end,
date_format(chk_start,"%Y-%m-%d") start,
date_format(chk_end,"%Y-%m-%d") end,
u.use_name, u.use_login_id, u.use_email, s.sta_annual, s.sta_employ, s.sta_end
FROM tbl_check c
JOIN tbl_staff s ON s.use_id = c.use_id
JOIN tbl_user u ON c.use_id = u.use_id;
create view view_staff as
select tbl_user.use_id, use_work_num, use_login_id, use_login_pass,use_phone, use_name, use_birth,
use_address, use_email, use_join, use_type, sta_bank, sta_account, sta_type,
sta_image,sta_employ, sta_end, sta_contract, sta_annual, date_format(sta_employ,'%Y-%m-%d') start,
date_format(sta_end,'%Y-%m-%d'), date_format(use_join,'%Y-%m-%d') ujoin
from tbl_user,tbl_staff
where tbl_user.use_id = tbl_staff.use_id;
create view view_schedule as
select s.sche_id, s.use_id, s.sche_day, s.sche_start,s.sche_end, s.sche_end,
vs.use_name, vs.use_work_num
from view_staff vs, tbl_schedule s
where s.use_id = vs.use_id;
create view view_staff_info as
select tbl_user.use_id, tbl_user.use_work_num, use_login_id, use_login_pass, use_phone, use_name, use_birth,
use_address, use_email, use_join, use_type, sta_bank, sta_account, sta_type, sta_image,
sta_employ, sta_end, sta_contract, sta_annual, date_format(sta_employ,'%Y-%m-%d') start,
date_format(sta_end,'%Y-%m-%d'), date_format(use_join,'%Y-%m-%d') ujoin, work_address, work_name
from tbl_user, tbl_staff, tbl_workplace
where tbl_user.use_id = tbl_staff.use_id and use_type=0 and tbl_user.use_work_num=tbl_workplace.use_work_num;
create view view_schedule_time2 as
select s.sche_id, s.use_id, s.sche_day, s.sche_start, s.sche_end, u.use_name,
u.use_work_num, w.work_name,DATE_FORMAT(s.sche_start, '%Y-%m-%d %T') start,
DATE_FORMAT(s.sche_end, '%Y-%m-%d %T') end
from tbl_schedule s , tbl_user u, tbl_workplace w
where s.use_id = u.use_id;
create view view_work as
select tbl_user.use_id, tbl_user.use_work_num, use_login_id, use_login_pass, use_phone, use_name, use_birth, use_address,
use_email, use_join, use_type, work_address, work_name
from tbl_user, tbl_workplace
where tbl_user.use_id=tbl_workplace.use_id;
홈페이지 접속 시 500번 오류가 계속 났는데
뷰를 새로 생성하고 나니 정상적으로 작동했다 : )